Olá, estou tentando utilizar uma classe obtida aqui no GUJ mesmo, para consultar o status do serviço do webservice da receita, mas so tenho o seguinte retorno: (Bad response, Forbidden)
segue a classe:
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.net.URL;
import java.security.Security;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.MimeHeaders;
import javax.xml.soap.SOAPConnection;
import javax.xml.soap.SOAPConnectionFactory;
import javax.xml.soap.SOAPConstants;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPMessage;
/**
*
* @author diego
*/
public class NfeTeste{
public static void main(String[] args) {
StringBuffer soapMessage = new StringBuffer();
soapMessage.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>")
.append("<soap12:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\">")
.append("<soap12:Header>")
.append("<nfeCabecMsg xmlns=\"http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2\">")
.append("<versaoDados>1.07</versaoDados>")
.append("<cUF>29</cUF>")
.append("</nfeCabecMsg>")
.append("</soap12:Header>")
.append("<soap12:Body>")
.append("<nfeStatusServicoNF2 xmlns=\"http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2\">")
.append("<nfeDadosMsg xmlns=\"http://www.portalfiscal.inf.br/nfe\">")
.append("<consStatServ versao=\"1.07\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.portalfiscal.inf.br/nfe\" xmlns=\"http://www.portalfiscal.inf.br/nfe\">")
.append("<versao>1.07</versao>")
.append("<tpAmb>2</tpAmb>")
.append("<cUF>29</cUF>")
.append("<xServ>STATUS</xServ>")
.append("</consStatServ>")
.append("</nfeDadosMsg>")
.append("</nfeStatusServicoNF2>")
.append("</soap12:Body>")
.append("</soap12:Envelope>");
metodo2(soapMessage.toString(), "https://nfe.sefaz.ba.gov.br/webservices/nfenw/NfeStatusServico2.asmx");
}
public static void metodo2(String envelope, String urlAddress) {
try {
MessageFactory factory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
SOAPMessage message;
try {
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore", "C:\\certificado.pfx");
System.setProperty("javax.net.ssl.keyStorePassword", "senha");
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "C:\\truststore.jks");
MimeHeaders header = new MimeHeaders();
header.addHeader("Content-Type", "application/soap+xml");
message = factory.createMessage(header, new ByteArrayInputStream(envelope.getBytes()));
SOAPConnection con = SOAPConnectionFactory.newInstance().createConnection();
URL url = new URL(urlAddress);
System.out.println("Message enviada \n"+message.toString());
SOAPMessage res = con.call(message, url);
ByteArrayOutputStream in = new ByteArrayOutputStream();
message.writeTo(in);
System.out.println("in :\n"+in.toString());
ByteArrayOutputStream out = new ByteArrayOutputStream();
res.writeTo(out);
System.out.println("out :\n"+desnormalizar(out.toString()));
} catch (IOException ex) {
System.out.println("" + ex.getMessage());
} finally {
}
} catch (SOAPException ex) {
System.out.println("" + ex.getMessage());
}
}
public static String desnormalizar(String texto) {
return texto.replace("<", "<").replace(">", ">").replace("''", "\"").replace(" ", "\r");
}
}