Estou brigando há 1 semana com o serviço de envio de notas da NF-e 2.0.
Já consegui comunicar com a SEFAZ (consulta status do serviço), logo meus certificados e o restante está ok.
A única coisa que está pegando é que eles modificaram o tipo do parâmetro de dados de string (versão 1.10) para XML (versão 2.0). No entanto, ao enviar a nota assinada ele está “transformando” meu XML, como se de fato ele fosse uma string. Logo, deixando de funcionar.
Estou utilizando o JAX para a comunicação. Alguém tem alguma ideia sobre como enviar uma String sem que o Java tente “corrigir” nosso conteúdo?
Eu uso o Axis2 para a comunicação com os webservices de SP e está tudo funcionando (pelo menos no ambiente de homologação).
Se puder postar algum código e também a descrição do problema.
marciosantri
Na verdade, eu estressei com as classes dando esses erros e fiz no melhor estilo "Chuck Norris Mode". Chamei os procedimentos da SEFAZ como se fosse um serviço HTTP comum, montando o XML no braço e funcionou tudo certo. Não ficou elegante mas me resolveu. Talvez mais pra frente eu volte à verificar como resolver o problema anterior.
Abaixo, trecho para enviar a mensagem para quem estiver sofrendo e quiser uma luz.
// Preparando conexão SSL - Tem vários exemplos no GUJ para certificado A1 e A3prepararSSL();// Montando XML de envio no braçoStringmensagem="<?xml ..........";URLu=newURL(caminhoWebService);HttpURLConnectionconnection=(HttpURLConnection)u.openConnection();connection.setDoOutput(true);connection.setDoInput(true);connection.setRequestMethod("POST");connection.setRequestProperty("Content-Type","text/xml; charset=utf-8");connection.connect();enviarEnvelopeXML(connection,mensagem);StringxmlRetornado=getResposta(connection);
Com o HttpConnection acho que você não vai ter muito sucesso,
O jeito mais fácil é usando um SoapMessage, ai vc escreve o XML inteiro do SOAP, incluindo o envelope e envia. Simples e fácil.
Não tenho um exemplo pra te mostrar, eu perdi o meu que eu usava pra comparar o soap que tinha que enviar com o soap que o Axis2 enviava
Obs:
na versão 1.0, vc devia enviar uma string, ai tinha que converter os < e > para as respectivas entidades html, agora o que vc deve enviar é o xml inteiro
marciosantri
Zoren, esse exemplo acima está funcionando. Inclusive tive que escrever o XML inteiro do SOAP.
Inté.
marciosantri
É justamente este o problema que eu grilei com o JAX. Talvez por não saber como fazer isto da melhor maneira, admito. Mas ficar mapeando o XML inteiro como tive que fazer no processo de verificação do status é que eu não vou ficar fazendo.