Estou acessando um WS com JAX-WS e preciso retirar o prefixo do namespace quando ele envia o XML. O xml é gerado sem prefixos, mas quando ele envia os prefixos aparecem :S
qdo tah xmlns=“namespace” quer dizer q o namespace vai ficar sem prefixo
se tiver xmlns:qqer=“namespace” quer dizer q o namespace vai ficar com o prefixo qqer…
de qqer coisa, eu acho q vc vai ter que colocar o xml que vc precisa q esteja sem prefixo
dentro de um CDATA
Na verdade estou utilizando o NetBeans para criação de uma classe de comunicação, assim como foi feito para a NF-e. O problema é que como o CT-e não segue o padrão da NF-e, onde o método era chamado com 2 parâmetros String (cabeçalho e dados), ainda não consegui passar as informações para o objeto cteDadosMsg.
Eu já possuo o XML gerados, tudo que eu preciso é passar para a classe cteDadosMsg.
Poderia dar uma dica? No projeto de NF-e, eu jogava os dados do XML para Strings e estava ok.
Obrigado
C
cristiano.andrade
Você já importou o WS com o wsimport para gerar as classes?
C
cinglez
Não, eu gerei as classes diretamente no NetBeans utilizando o WSDL. O que ele gera é:
try{// Call Web Service Operationbr.inf.portalfiscal.cte.wsdl.ctestatusservico.CteStatusServicoservice=newbr.inf.portalfiscal.cte.wsdl.ctestatusservico.CteStatusServico();br.inf.portalfiscal.cte.wsdl.ctestatusservico.CteStatusServicoSoap12port=service.getCteStatusServicoSoap12();// TODO initialize WS operation arguments herebr.inf.portalfiscal.cte.wsdl.ctestatusservico.CteDadosMsgcteDadosMsg=newbr.inf.portalfiscal.cte.wsdl.ctestatusservico.CteDadosMsg();// TODO process result herebr.inf.portalfiscal.cte.wsdl.ctestatusservico.CteStatusServicoCTResultresult=port.cteStatusServicoCT(cteDadosMsg);System.out.println("Result = "+result);}catch(Exceptionex){// TODO handle custom exceptions here}
Muito similar ao que gerava para NF-e. O que eu não estou sabendo fazer é passar os dados dos XML, que já tenho em variáveis String para o objeto cteDadosMsg.
Obrigado novamente!
C
cristiano.andrade
Então, você já tem o objeto cteDadosMsg o que voce precisa fazer é fazer o binding usando o JAXB.
O JAXB possui duas classes que ajudam fazer isso uma delas é o Marshaller que transforma o objeto java em XML.
Outra é o UnMarshaller que transforma o XML em Objeto.
cristiano.andrade vc conseguiu resolver esse problema do namespace?
Estou exatamente com o mesmo problema na NF-e.
Qdo adiciono um Document xml no meu objeto NfeDadosMsg na tag infCanc, ele adiciona o namespace e um xmlns="" (vazio)
Diferente dessas pessoas que somente diz que resolveu e não posta a solução, vou postar aqui como consegui resolver, de todas foi a mais fáil que achei :
Criei o arquivo package-info.java, coloquei dentro da pasta onde gera o XML e funfou perfeitamente.
A
aix
Marcelo Bento:
Diferente dessas pessoas que somente diz que resolveu e não posta a solução, vou postar aqui como consegui resolver, de todas foi a mais fáil que achei :
Criei o arquivo package-info.java, coloquei dentro da pasta onde gera o XML e funfou perfeitamente.
se esta usando o JAX-WS essa sua solução só serve para a geração do XML quando for enviar para a sefaz na versão 1.2 do SOAP que precisa enviar os dados com o tipo mime XML e não String como se faz no Axis2 não ira funcionar pois precisa colocar o objeto e ainda tem os dados do cabeçalho o máximo que consegue com sua solução é consumir o status do serviço falo se usar JAX-WS, abraços.
M
Marcelo_Bento
Olá AIX, blz?
Cara… comigo funcionou filet e obtive os restornos esperados!