Login Registre-se
SOAP nfe erro com string &lt &gt  XML
Índice dos Fóruns » NF-e / NFS-e / CT-e / CF-e / Certificados Digitais
Autor Mensagem
mgvasconcelos

JavaC Membro

Membro desde: 01/05/2014 15:14:51
Mensagens: 18
Offline

Caros colegas,

Estou com uma dificuldade em consumir o WebService da fazenda através do SOAP.
Eu atinjo ele e obtenho uma resposta com erro 500, ou seja não conseguiu ler o que eu mandei, olhando no Envelope vejo que o Header foi correto mas o Body não, ele converteu os <> em "& lt" "& gt".

Alguém saberia me dizer uma solução para que não faça essa conversão?

Segue meu código.



Segue o Erro:


Observe a linha do envelope (considere que apartir do <S:Body><S:Body><nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2">... todos os < > estão errados, não consegui colocar exatamente porque no html ele corrige :/)



e retorno


Desde já agradeço.

MGV
mgvasconcelos

JavaC Membro

Membro desde: 01/05/2014 15:14:51
Mensagens: 18
Offline

E eu consegui.

Após fechar o computador, comecei a analisar os meus passos e ações do SOAP. Pensando o SOAP consegue ler o Cabeçalho no formato JAXBElement<> porque a mensagem eu precisava fazer marshall e passar como texto?

Pensando dessa forma voltei a conferir as classes geradas e percebi que não era para adicionar uma String ao getContent() e sim um objeto. Resolvi então adicionar esse objeto gerado no formato JAXBElement através da ObjectFactory().createConsStatServ(consStatServ) e perfeito, mudou o erro.

Agora dizia que a classe TConsStatServ não pertencia ao context.

Voltamos a pesquisa e de olho nas classes geradas notei algo. Na classe NfeStatusServico2Soap12 só constava no @XMLSeeAlso({}) a própria objectfactory.class e resolvi incluir também a ObjectFactory.class do pacote da TConsStatServ.

E finalmente funcionou. (melhor dizendo, agora estou com um erro no namespace mas não tenho mais erro no consumo do WebService)

Segue agora o código como ficou.



MGV
Franciscato

JavaC Membro
[Avatar]
Membro desde: 02/07/2014 08:09:59
Mensagens: 13
Offline

Cara, eu desenvolvi muito parecido com você.
Consegui obter a resposta do Sefaz, mas não sei como transformar esse xml na classe TRetConsStatServ.

Como você fez isso?

Eu até consegui transformar o objeto "NfeStatusServicoNF2Result" em xml, utilizando JAXB.
Mas não tem como esse retorno ser direto na classe do leiaute (TRetConsStatServ)????

desde já, Valeu.

Esta mensagem foi editada 1 vez. Última atualização foi em 03/07/2014 10:29:42

mgvasconcelos

JavaC Membro

Membro desde: 01/05/2014 15:14:51
Mensagens: 18
Offline

Então.

Na verdade o NfeStatusServicoNF2Result é um ArrayList de Objetos e a assinatura desses objetos é igual a do TRetConsStatServ.

Então você pode fazer

TRetConsStatServ retorno = (TRetConsStatServ) NfeStatusServicoNF2Result.getContent().get(0);


Edit Quando eu digo NfeStatusServicoNF2Result eu quero dizer a variável onde guardou o retorno e não a classe em si.

Algo do gênero.

NfeStatusServicoNF2Result resultado = ...

TRetConsStatServ retorno = (TRetConsStatServ) resultado.getContent().get(0);

Esta mensagem foi editada 3 vezes. Última atualização foi em 03/07/2014 11:24:37


MGV
Franciscato

JavaC Membro
[Avatar]
Membro desde: 02/07/2014 08:09:59
Mensagens: 13
Offline

Ele deu ClassCastException, o Objeto armazenado em NfeStatusServicoNF2Result.content é um ElementNSImpl.
E não pode ser convertido para um TRetConsStatServ.

Estou fazendo alguma coisa errada?



Veja o main:



Desde já, obrigado por estar ajudando.
 
Índice dos Fóruns » NF-e / NFS-e / CT-e / CF-e / Certificados Digitais
Ir para:   
Powered by JForum 2.1.9 © JForum Team