eu consegui resolver, porém tive que usar o Axis2, e neste projeto que estou trabalhando não posso usar as libs do Axis2(que são varias) então escrevi com SOAPMessage porém não consigo identificar o porque (somente o serviço de consuta de cadastro) com Axis2 funciona e com SOAPMessage não, alguem sabe em que ponto estou errando ? lembrando que com SOAPMessage eu consumo todos os outros serviços da sefaz apenas não consigo a consulta do cadastro, segue o código com SOAPMessage que não esta funcionando trazendo o erro descrito acima ‘ERRO NA APLICACAO’ e mais abaixo o que funciona com Axis2, agradeço se alguem puder me ajudar, abraços.
package br.com.basecompany.base.nfe;
import br.com.basecompany.base.xml.XmlDocument;
import br.com.basecompany.base.xml.XmlString;
import java.io.ByteArrayInputStream;
import java.io.StringWriter;
import java.net.URL;
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.SOAPMessage;
import javax.xml.transform.Source;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
/**
*
* @author Cilnei Cunha
*/
public class ConsCadSOAP {
public static void main(String[] arg) throws Throwable {
String caminhoCertificado = "C:\\temp\\certificado.pfx";
String senhaCertificado = "senhaAqui";
String uf = "43";
String cnpj = "00000000000000";
System.out.println("*** retConsCad" + ConsCadSOAP.retornoConsultaCadastro(caminhoCertificado, senhaCertificado, uf, cnpj));
}
public static String retornoConsultaCadastro(String caminhoCerticado, String senhaCertificado, String uf, String cnpj) throws Throwable {
System.setProperty("sun.security.ssl.allowUnsafeRenegotiation", "true");
if (uf.equalsIgnoreCase("RS")) {
uf = "43";
}
// Habilita SSL na aplicação.
Certificado.ler(caminhoCerticado, senhaCertificado);
String retConsCad = null;
String consCad = "<ConsCad versao=\"2.00\" xmlns=\"http://www.portalfiscal.inf.br/nfe\">"
+ "<infCons>"
+ "<xServ>CONS-CAD</xServ>"
+ "<UF>RS</UF>"
+ "<CNPJ>" + cnpj + "</CNPJ>"
+ "</infCons>"
+ "</ConsCad>";
String urlAdders = null;
if (uf.equals("13")) {
urlAdders = "https://nfe.sefaz.am.gov.br/services2/services/NfeConsulta2";
}
if (uf.equals("29")) {
urlAdders = "https://nfe.sefaz.ba.gov.br/webservices/nfenw/CadConsultaCadastro2.asmx";
}
if (uf.equals("23")) {
urlAdders = "https://nfe.sefaz.ce.gov.br/nfe2/services/NfeConsulta2";
}
if (uf.equals("52")) {
urlAdders = "https://nfe.sefaz.go.gov.br/nfe/services/v2/NfeConsulta2?wsdl";
}
if (uf.equals("31")) {
urlAdders = "https://nfe.fazenda.mg.gov.br/nfe2/services/NfeConsulta2";
}
if (uf.equals("50")) {
urlAdders = "https://nfe.fazenda.ms.gov.br/producao/services2/NfeConsulta2";
}
if (uf.equals("51")) {
urlAdders = "https://nfe.sefaz.mt.gov.br/nfews/v2/services/NfeConsulta2?wsdl";
}
if (uf.equals("26")) {
urlAdders = "https://nfe.sefaz.pe.gov.br/nfe-service/services/NfeConsulta2";
}
if (uf.equals("41")) {
urlAdders = "https://nfe2.fazenda.pr.gov.br/nfe/NFeConsulta2?wsdl";
}
if (uf.equals("43")) {
urlAdders = "https://sef.sefaz.rs.gov.br/ws/cadconsultacadastro/cadconsultacadastro2.asmx";
}
if (uf.equals("35")) {
urlAdders = "https://nfe.fazenda.sp.gov.br/nfeweb/services/nfeconsulta2.asmx";
}
if (uf.equals("32") || uf.equals("21") || uf.equals("15") || uf.equals("22") || uf.equals("24")) {
urlAdders = "https://www.sefazvirtual.fazenda.gov.br/NfeConsulta2/NfeConsulta2.asmx";
}
if (uf.equals("12") || uf.equals("27") || uf.equals("16")
|| uf.equals("53") || uf.equals("25") || uf.equals("33")
|| uf.equals("11") || uf.equals("14") || uf.equals("42")
|| uf.equals("28") || uf.equals("17")) {
urlAdders = "https://nfe.sefazvirtual.rs.gov.br/ws/NfeConsulta/NfeConsulta2.asmx";
}
StringBuilder soapMessage = new StringBuilder();
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/cadConsultaCadastro2\">").
append("<versaoDados>").
append("2.00").
append("</versaoDados>").
append("<cUF>").
append(uf).
append("</cUF>").
append("</nfeCabecMsg>").
append("</soap12:Header>").
append("<soap12:Body>").
append("<nfeDadosMsg xmlns=\"http://www.portalfiscal.inf.br/nfe/wsdl/CadConsultaCadastro2\">").
append(consCad).
append("</nfeDadosMsg>").
append("</soap12:Body>").
append("</soap12:Envelope>");
MessageFactory factory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
MimeHeaders header = new MimeHeaders();
header.addHeader("Content-Type", "application/soap+xml");
SOAPMessage message = factory.createMessage(header, new ByteArrayInputStream(soapMessage.toString().getBytes()));
SOAPConnection con = SOAPConnectionFactory.newInstance().createConnection();
URL url = new URL(urlAdders);
SOAPMessage res = con.call(message, url);
con.close();
StringWriter sw = new StringWriter();
Source source = new DOMSource(res.getSOAPPart().getEnvelope().getBody().getFirstChild().getFirstChild());
TransformerFactory.newInstance().newTransformer().transform(source, new StreamResult(sw));
retConsCad = sw.toString();
return retConsCad;
}
}
metodo que carrega as properties:
package br.com.basecompany.base.nfe;
import br.com.basecompany.base.Tools;
import java.io.File;
import java.security.Security;
/**
*
* @author Dilnei Cunha
*/
public class Certificado {
/**
* @param caminhoCertificado
* @param senhaCertificado
* @throws Throwable
*/
protected static void ler(String caminhoCertificado, String senhaCertificado) throws Throwable {
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.clearProperty("javax.net.ssl.keyStore");
System.clearProperty("javax.net.ssl.keyStorePassword");
System.clearProperty("javax.net.ssl.trustStore");
System.setProperty("javax.net.ssl.keyStore", caminhoCertificado);
System.setProperty("javax.net.ssl.keyStorePassword", senhaCertificado);
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
if (!Tools.FileSystem.exists("trust_store_nfe")) {
File file = new File(".");
throw new Throwable("O arquivo de chaves da aplicação não foi encontrado na pasta " + file.getCanonicalPath());
}
System.setProperty("javax.net.ssl.trustStore", "trust_store_nfe");
}
}
Código que funciona usando Axis2:
package br.com.basecompany.base.nfe;
import br.inf.portalfiscal.www.nfe.wsdl.cadconsultacadastro2.CadConsultaCadastro2Stub;
import java.io.StringReader;
import java.net.URL;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamReader;
/**
*
* @author Dilnei Cunha
*/
public class ConsCadAxis {
public static void main(String[] args) throws Throwable {
try {
String estadoConsulta = "43";
String estadoXML = "RS";
System.setProperty("sun.security.ssl.allowUnsafeRenegotiation", "true");
/**
* CNPJ Sem formatacao. Caso esta formatado
* retornara Falha de Schema XML.
*/
String cnpjConsultado = "00000000000000";
URL url = new URL("https://sef.sefaz.rs.gov.br/ws/cadconsultacadastro/cadconsultacadastro2.asmx");
String caminhoDoCertificadoDoCliente = "C:\\temp\\certificado.pfx";
String senhaDoCertificadoDoCliente = "senhaDoCertificado";
// Habilita SSL na aplicação.
Certificado.ler(caminhoDoCertificadoDoCliente, senhaDoCertificadoDoCliente);
/**
* Xml de Consulta.
*/
StringBuilder xml = new StringBuilder();
xml.append("<nfeDadosMsg>").
append("<ConsCad versao=\"2.00\" xmlns=\"http://www.portalfiscal.inf.br/nfe\">").
append("<infCons>").
append("<xServ>CONS-CAD</xServ>").
append("<UF>").
append(estadoXML).
append("</UF>").
append("<CNPJ>").
append(cnpjConsultado).
append("</CNPJ>").
append("</infCons>").
append("</ConsCad>").
append("</nfeDadosMsg>");
XMLStreamReader dadosXML = XMLInputFactory.newInstance().createXMLStreamReader(new StringReader(xml.toString()));
CadConsultaCadastro2Stub.NfeDadosMsg dadosMsg = CadConsultaCadastro2Stub.NfeDadosMsg.Factory.parse(dadosXML);
CadConsultaCadastro2Stub.NfeCabecMsg nfeCabecMsg = new CadConsultaCadastro2Stub.NfeCabecMsg();
/**
* Codigo do Estado.
*/
nfeCabecMsg.setCUF(estadoConsulta);
/**
* Versao do XML
*/
nfeCabecMsg.setVersaoDados("2.00");
CadConsultaCadastro2Stub.NfeCabecMsgE nfeCabecMsgE = new CadConsultaCadastro2Stub.NfeCabecMsgE();
nfeCabecMsgE.setNfeCabecMsg(nfeCabecMsg);
CadConsultaCadastro2Stub stub = new CadConsultaCadastro2Stub(url.toString());
CadConsultaCadastro2Stub.ConsultaCadastro2Result result = stub.consultaCadastro2(dadosMsg, nfeCabecMsgE);
System.out.println(result.getExtraElement().toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}