Consulta do cadastro

Ola amigos,

esta implementando a consulta do cadstro mas estou com o seguinte erro para RS:

retorno:

<?xml version="1.0" encoding="UTF-8"?><retConsCad xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><infCons><verAplic>RSa20111123153057</verAplic><cStat>999</cStat><xMotivo>ERRO NA APLICACAO</xMotivo><dhCons>2011-11-25T17:16:21</dhCons><cUF>43</cUF></infCons></retConsCad>

meu xml que vai no SOAP:

<?xml version="1.0" encoding="utf-8" ?> 
- <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">
- <soap12:Header>
- <nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/cadConsultaCadastro2">
  <cUF>43</cUF> 
  <versaoDados>2.00</versaoDados> 
  </nfeCabecMsg>
  </soap12:Header>
- <soap12:Body>
- <nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/CadConsultaCadastro2">
- <ConsCad versao="2.00" xmlns="http://www.portalfiscal.inf.br/nfe">
- <infCons>
  <xServ>CONS-CAD</xServ> 
  <UF>RS</UF> 
  <CNPJ>00000000000000</CNPJ> 
  </infCons>
  </ConsCad>
  </nfeDadosMsg>
  </soap12:Body>
  </soap12:Envelope>

aguem ja passou por este erro ?

Obs: não quero usar Axis.

Já tentou passar com um CNPJ válido pra ver se dá certo?

Inté!

[quote=marciosantri]Já tentou passar com um CNPJ válido pra ver se dá certo?

Inté![/quote]

ai meu Deus, acha mesmo que eu iria estar criando clientes WS e não saberia pasar os dados corretos no SOAP ?

não precisa mais, ja descobri abraços.

posta a solução aí para se alguém estiver procurando a resposta encontrá-la.

sempre fiz isto, mas dessa vez não vou fazer, pois das minhas 300 mensagens que perguntei quando realmente precisei, não tive ajuda, e ja vi que o conhecimento não vem de graça.

[quote=aix][quote=marciosantri]Já tentou passar com um CNPJ válido pra ver se dá certo?

Inté![/quote]

ai meu Deus, acha mesmo que eu iria estar criando clientes WS e não saberia pasar os dados corretos no SOAP ?[/quote]

Poxa cara, só tava querendo ajudar. Não precisa se ofender.

[quote=marciosantri][quote=aix][quote=marciosantri]Já tentou passar com um CNPJ válido pra ver se dá certo?

Inté![/quote]

ai meu Deus, acha mesmo que eu iria estar criando clientes WS e não saberia pasar os dados corretos no SOAP ?[/quote]

Poxa cara, só tava querendo ajudar. Não precisa se ofender.

[/quote]

desculpa brother, eu não sou assim, no momento eu estava sobracarregado e fiquei irritado.

[quote=aix][quote=marciosantri][quote=aix][quote=marciosantri]Já tentou passar com um CNPJ válido pra ver se dá certo?

Inté![/quote]

ai meu Deus, acha mesmo que eu iria estar criando clientes WS e não saberia pasar os dados corretos no SOAP ?[/quote]

Poxa cara, só tava querendo ajudar. Não precisa se ofender.

[/quote]

desculpa brother, eu não sou assim, no momento eu estava sobracarregado e fiquei irritado.[/quote]

Tranquilo, tem dia que é barra mesmo.
Fica na paz.

Inté.

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();
        }
    }
}

Bom… não entendí muito bem o problema, até porque não sei como funcionam os serviços da SEFAZ, mas já tentou com o SoapUI? Teoricamente, o que sair do seu cliente JAX-WS deve ser igual à requisição do Soap UI.

[]'s

[quote=asaudate]Bom… não entendí muito bem o problema, até porque não sei como funcionam os serviços da SEFAZ, mas já tentou com o SoapUI? Teoricamente, o que sair do seu cliente JAX-WS deve ser igual à requisição do Soap UI.

[]'s[/quote]

Ola Asaudate em primeiro lugar gostaria de agradecer em responder, seguinte: eu não uso bibliotecas como Axis, Axis2, JAX-WS, e neste projeto nem posso, então crio minhas Messages diretamente para a parte remota, obtenho a conexão a através de uma factory e bla bla bla…

se vc olhar o código vais perceber que não gero esquetons(stubs) nem nada, porèm para este serviço em especifico não estou conseguindo consumir sem ter que usar essas lib como Axis, Axis2, JAX-WS, no caso do SoapUI eu ja usei e conheço porém acredito que pouco vai me ajudar neste caso, eu acredito que o mais provavel seja uma propriedade que tenha que configurar antes da chamada a connection.call(); espero ter sido claro, agradeço desde ja.

[quote=aix][quote=asaudate]Bom… não entendí muito bem o problema, até porque não sei como funcionam os serviços da SEFAZ, mas já tentou com o SoapUI? Teoricamente, o que sair do seu cliente JAX-WS deve ser igual à requisição do Soap UI.

[]'s[/quote]

Ola Asaudate em primeiro lugar gostaria de agradecer em responder, seguinte: eu não uso bibliotecas como Axis, Axis2, JAX-WS, e neste projeto nem posso, então crio minhas Messages diretamente para a parte remota, obtenho a conexão a através de uma factory e bla bla bla…

se vc olhar o código vais perceber que não gero esquetons(stubs) nem nada, porèm para este serviço em especifico não estou conseguindo consumir sem ter que usar essas lib como Axis, Axis2, JAX-WS, no caso do SoapUI eu ja usei e conheço porém acredito que pouco vai me ajudar neste caso, eu acredito que o mais provavel seja uma propriedade que tenha que configurar antes da chamada a connection.call(); espero ter sido claro, agradeço desde ja. [/quote]

Tudo bem, só que ainda não ficou claro pra mim qual é o problema… a SEFAZ só manda aquela exception quando você não usa as libs do Axis? Neste caso, insisto, seria interessante você usar o Soap UI em conjunto com um sniffer (recomendo o Wireshark) para saber o que está se passando pela rede e o que o seu cliente está mandando. Lembrando que, por baixo dos panos, acaba sendo tudo HTTP simples, com um ou outro complicômetro de negociação de conteúdo, etc.

[]'s

[quote=asaudate][quote=aix][quote=asaudate]Bom… não entendí muito bem o problema, até porque não sei como funcionam os serviços da SEFAZ, mas já tentou com o SoapUI? Teoricamente, o que sair do seu cliente JAX-WS deve ser igual à requisição do Soap UI.

[]'s[/quote]

Ola Asaudate …propriedade que tenha que configurar antes da chamada a connection.call(); espero ter sido claro, agradeço desde ja. [/quote]

Tudo bem, só que ainda não ficou claro pra mim qual é o problema… a SEFAZ só manda aquela exception quando você não usa as libs do Axis? Neste caso, insisto, seria interessante você usar o Soap UI em conjunto com um sniffer (recomendo o Wireshark) para saber o que está se passando pela rede e o que o seu cliente está mandando. Lembrando que, por baixo dos panos, acaba sendo tudo HTTP simples, com um ou outro complicômetro de negociação de conteúdo, etc.

[]'s[/quote]

hummm, boa idéia, ainda não utilizei este snnifer, vou testar agora a tarde e depois conto, vlw manu, acho que vc me apontou o caminho das pedras :slight_smile:

[quote=aix]…
Tudo bem, só que ainda não ficou claro pra mim qual é o problema… a SEFAZ só manda aquela exception quando você não usa as libs do Axis? Neste caso, insisto, seria interessante você usar o Soap UI em conjunto com um sniffer (recomendo o Wireshark) para saber o que está se passando pela rede e o que o seu cliente está mandando. Lembrando que, por baixo dos panos, acaba sendo tudo HTTP simples, com um ou outro complicômetro de negociação de conteúdo, etc.
hummm, boa idéia, ainda não utilizei este snnifer, vou testar agora a tarde e depois conto, vlw manu, acho que vc me apontou o caminho das pedras :)[/quote]

vlw Asaudate, resolvido, era a String SOAP mal formada mesmo, eu não conseguia perceber, agora sim consegui eliminar a porcaria do Axis da minha app, thanks.