Problema consulta status da NFe 2.0

Boa tarde pessoal, estou tendo problemas com a consulta status da versão 2.0 no PR.
Segue abaixo meu xml de consulta :

<?xml version="1.0" encoding="UTF-8" ?>
<nfeDadosMsg>
<consStatServ versao="2.00" xmlns="http://www.portalfiscal.inf.br/nfe">
<tpAmb>2</tpAmb>
<cUF>41</cUF>
<xServ>STATUS</xServ>
</consStatServ>
</nfeDadosMsg>

Retorna a seguinte mensagem :
org.apache.axis2.AxisFault: Transport level information does not match with SOAP Message namespace URI
at org.apache.axis2.AxisFault.makeFault(AxisFault.java:417)
at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:89)
at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:326)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:389)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:211)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)

Já fiz teste com RS, SVRS e MS e todos estão consultando perfeitamente. Só tive problemas com o paraná mesmo.

Alguém sabe me dizer o que pode ser essa mensagem :

" Transport level information does not match with SOAP Message namespace URI "

Olá acmedis,

Realizei um teste e o retorno foi o seguinte

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
X-Powered-By: Servlet 2.5; JBoss-5.0/JBossWeb-2.1
Content-Type: application/soap+xml;charset=UTF-8
Transfer-Encoding: chunked
Date: Tue, 23 Nov 2010 12:39:56 GMT

<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>
<env:Header>
<nfeCabecMsg xmlns='http://www.portalfiscal.inf.br/nfe'>
<cUF>41</cUF>
<versaoDados>2.00</versaoDados>
</nfeCabecMsg>
</env:Header>
<env:Body>
<nfeStatusServicoNF2Result xmlns='http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2'>
<retConsStatServ versao='2.00' xmlns='http://www.portalfiscal.inf.br/nfe'>
<tpAmb>2</tpAmb>
<verAplic>PR-m4.0.1-v2_0_4</verAplic>
<cStat>107</cStat>
<xMotivo>Serviço em Operação</xMotivo>
<cUF>41</cUF>
<dhRecbto>2010-11-23T10:39:56</dhRecbto>
<tMed>1</tMed>
</retConsStatServ>
</nfeStatusServicoNF2Result>
</env:Body>
</env:Envelope>

O problema é que eles estão encapsulando a mensagem de resposta como sendo SOAP 1.2 Content-Type: application/soap+xml;charset=UTF-8
mas a mensagem soap utiliza namespace do SOAP 1.1 <env:Envelope xmlns:env=‘http://schemas.xmlsoap.org/soap/envelope/’>
Como o axis2 valida se o content-type da requisição da versão de soap utilizada bate com o namespace que descreve a versão de soap corrente, emite a exceção:
org.apache.axis2.AxisFault: Transport level information does not match with SOAP Message namespace URI

O correto seria eles devolverem <env:Envelope xmlns:env=“http://www.w3.org/2003/05/soap-envelope”>

nessinhavos obrigado pelo retorno.
Você pode me ajudar como solucionar isso? Como devo proceder ?

Acredito que o melhor a ser feito é informar o problema a SEFAZ-PR.
Não sei te dizer como fazer para retirar essa validação do axis2 :?

Padrão para mensagem SOAP 1.1
Content-Type: text/xml; charset=utf-8
namespace: ‘http://schemas.xmlsoap.org/soap/envelope/

Padrão para mensagem SOAP 1.2
Content-Type: application/soap+xml;charset=UTF-8
namespace: ‘http://www.w3.org/2003/05/soap-envelope

Eu faço teste de conexao utilizando um método que dispara por url… monto o envelope na mão…

public static String runWebService(String envelope, String urlAddress) {
        String result = "";

        try {
            MessageFactory factory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
            SOAPMessage message;

            try {
                message = factory.createMessage(null, new ByteArrayInputStream(envelope.getBytes()));
                SOAPConnection con = SOAPConnectionFactory.newInstance().createConnection();
                URL url = new URL(urlAddress);

                SOAPMessage res = con.call(message, url);

                ByteArrayOutputStream out = new ByteArrayOutputStream();

                res.writeTo(out);

                result = out.toString();

            } catch (IOException ex) {
                ex.printStackTrace();
            }
        } catch (SOAPException ex) {
            ex.printStackTrace();
        }
        return result;
    }

Envelope:

<?xml version="1.0" encoding="UTF-8"?><s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"><s:Header><nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2"><cUF>41</cUF><versaoDados>2.00</versaoDados></nfeCabecMsg></s:Header><s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2"><consStatServ xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><tpAmb>2</tpAmb><cUF>41</cUF><xServ>STATUS</xServ></consStatServ></nfeDadosMsg></s:Body></s:Envelope>

Espero ter ajudado :slight_smile:

Com o PR funcionou perfeitamente, dessa forma que vc passou.
Mas agora estou tendo problema com SVRS e RS. Pois tenho clientes que vão usar no PR , SC e RS.
A mensagem de erro do RS é :

com.sun.xml.internal.messaging.saaj.soap.ver1_2.Message1_2Impl@a56a7c
23/11/2010 15:29:45 com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection post
GRAVE: SAAJ0009: Message send failed
java.security.PrivilegedActionException: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Message send failed

Tem idéia do que pode ser?

Qual a versao do java q esta utilizando?
A partir da versao 6.19 começou a dar problema quando o WS é em .NET…

tenta resolver assim:

http://www.guj.com.br/posts/list/555/72325.java#1042772

testei e aqui funcionou…

pessoal,
eu não fiz na mão, estou usando o Axis2 para enviar…
mas qdo estou consumindo o serviço de consuta de status, esta dando timeout…
qdo consulto a disponibilidade do serviço no site portal da nfe de homologação, mostra que o PR esta vermelho
http://hom.nfe.fazenda.gov.br/PORTAL/VerificacaoDeServicos/VerificacaoServicos.aspx
qual é a url usada por vcs para consumir o serviço?
eu estou usando https://200.189.113.251:8543/nfe/NFeStatusServico2, que é que esta no wsdl…

Olá Felipe

estou usando https://homologacao.nfe2.fazenda.pr.gov.br/nfe/NFeStatusServico2

nessinhavos

Funcionou perfeitamente, valeu mais uma vez.

[quote=nessinhavos]Olá Felipe

estou usando https://homologacao.nfe2.fazenda.pr.gov.br/nfe/NFeStatusServico2[/quote]
cara…ta tudo meio estranho aqui… haha
no wsdl que peguei https://homologacao.nfe2.fazenda.pr.gov.br/nfe/NFeStatusServico2?wsdl mosta

soap12:address location="https://200.189.113.251:8543/nfe/NFeStatusServico2" /> usando isso da timeout…
e usando o endereço que vc me passou tenho outros erros
1 - usando o Axis2:

org.apache.axis2.AxisFault: Transport level information does not match with SOAP Message namespace URI

2- usando o código acima:

javax.xml.soap.SOAPException: org.apache.axiom.soap.SOAPProcessingException: Disallowed element found inside Envelope : {http://www.w3.org/2003/05/soap-envelope}Header

mas no axis2 tb é definido o namespace http://www.w3.org/2003/05/soap-envelope
tem alguma dica?

nessinhavos, estou mudando o sistema para montar o envelope na mão.

Mas estou com algumas dificuldades, vc pode me passar como ficaria os dados a serem enviados.
Igual ao seu exemplo do envelope da consulta status, não precisa ser o conteúdo completo.
Imagino que com essa informação eu consiga terminar o projeto.

até mais …

Olá acmedis,

Uma possibilidade é criar uma template tipo assim

    String msg = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>" +
                    "<env:Envelope xmlns:env=\"http://www.w3.org/2003/05/soap-envelope\" >"
                    + "<env:Header>"
                    + "<nfeCabecMsg xmlns=\"{0}\">"
                    + "<cUF>{3}</cUF>"
                    + "<versaoDados>{2}</versaoDados>"
                    + "</nfeCabecMsg>"
                    + "</env:Header>"
                    + "<env:Body>"
                    + "<nfeDadosMsg xmlns=\"{0}\">{1}</nfeDadosMsg>"
                    + "</env:Body>"
                    + "</env:Envelope>";

String xml; //conteudo xml
String envelope = MessageFormat.format(msg, "http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2", xml, "2.00", "41" );

dai é só passar o namespace, o arquivo xml, versao e o cUF de acordo com o serviço…
Mas seguinte, acredito que o WS nao esta ok pois deveria funcionar com axis2 tb…

Felipe,

por esse erro q vc teve com o codigo de exemplo nunca passei :?
mas parece q tem alguma coisa errada na montagem do envelope… aparentemente é no header da msg soap…
da uma conferida… qq coisa manda o stack trace completo e o envelope q gerou…

A Sefa/PR resolveu o problema da versão do SOAP (aparentemente), ao menos pra mim passou a funcionar sem alterar nada (ou quase nada, ainda tem que replicar o namespace na tag NFe para poder enviar os lotes). Mas ainda tem bug por lá, estão retornando XML do protoclo com Id p/ assinatura igual ao da NF, quando monta o arquivo de compartilhamento, fica com 2 dando erro de esquema ao validar o XML. Ainda no aguardo deles resolverem a pendenga :slight_smile:

nessinhavos, valeu pela resposta.
Eu tinha feito de outra forma mas o resultado foi o mesmo que vc passou.
Abaixo esta uma parte do xml da nota

<?xml version="1.0" encoding="UTF-8"?>
<enviNFe versao="2.00" xmlns="http://www.portalfiscal.inf.br/nfe"><idLote>1</idLote> ... </enviNFe> já com assinado. 

e quando eu passo pelo MessageFormat.format esta ficando com a informação <?xml version="1.0" encoding="UTF-8"?> no inicio da string e depois da tag .

<?xml version="1.0" encoding="UTF-8" ?><env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" ><env:Header><nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRecepcao2"><cUF>41</cUF><versaoDados>2.00</versaoDados></nfeCabecMsg></env:Header><env:Body><nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRecepcao2"><?xml version="1.0" encoding="UTF-8"?>
<enviNFe versao="2.00" xmlns="http://www.portalfiscal.inf.br/nfe"><idLote>1</idLote> ... 

O que eu gostaria de saber agora é de que forma consigo tirar essa segunda informação do XML, porque está ficando duplicado e ocasionando erro.

com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection post
WARNING: SAAJ0014: Invalid reply message. Content length of reply was zero.
java.util.concurrent.ExecutionException: java.lang.NullPointerException
java.util.concurrent.ExecutionException: java.lang.NullPointerException

Antes de gerar o XML a partir do document, defina setXmlStandalone(false)

ola skaplon

realmente corrigiram o problema hoje :slight_smile:

<env:Envelope xmlns:env='http://www.w3.org/2003/05/soap-envelope'>
<env:Header xmlns:env='http://www.w3.org/2003/05/soap-envelope'>
<nfeCabecMsg xmlns='http://www.portalfiscal.inf.br/nfe'>
<cUF>41</cUF>
<versaoDados>2.00</versaoDados>
</nfeCabecMsg>
</env:Header>
<env:Body xmlns:env='http://www.w3.org/2003/05/soap-envelope'>
<nfeStatusServicoNF2Result xmlns='http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2'>
<retConsStatServ versao='2.00' xmlns='http://www.portalfiscal.inf.br/nfe'>
<tpAmb>2</tpAmb>
<verAplic>PR-m4.0.1-v2_0_7</verAplic>
<cStat>107</cStat>
<xMotivo>Serviço em Operação</xMotivo>
<cUF>41</cUF>
<dhRecbto>2010-11-25T11:49:49</dhRecbto>
<tMed>1</tMed>
</retConsStatServ>
</nfeStatusServicoNF2Result>
</env:Body>
</env:Envelope>

a disponibilidade esta ok http://hom.nfe.fazenda.gov.br/PORTAL/VerificacaoDeServicos/VerificacaoServicos.aspx
agora funciona no axis2 :wink:

E já resolveram o problema do Id também, notei que na sua chamada a versão do programa é diferente, fui tentar de novo e gerou certo :smiley:

Consegui transmitir a nota, porem esta retornando com rejeição : 999 Erro nao catalogado.

Alguém conseguiu autorizar alguma nota?