Bom dia Pessoal,
Tenho um método que cria um mensagem SOAP para fazer a comunicação com o CTe, em partes ela está funcionando, o problema é que quando do um marshall para adicionar meu xml no body da mensagem é criado um prefixo ns3:, mesmo usando o método setPrefix do Body não consegui tirar o prefixo
Método:
public static String getEnvelopeSOAP( String version,
String cUF,
String soapAction,
Object object,
Class clazz ) throws SOAPException, JAXBException, IOException {
SOAPMessage mensagem = MessageFactory.newInstance().createMessage();
SOAPElement elementHeader = mensagem.getSOAPHeader().addHeaderElement(new QName(soapAction, "cteCabecMsg"));
SOAPElement elementcUF = elementHeader.addChildElement("cUF");
SOAPElement elementVersao = elementHeader.addChildElement("versaoDados");
elementcUF.setValue(cUF);
elementVersao.setValue(version);
SOAPBodyElement body = mensagem.getSOAPBody().addBodyElement(new QName(soapAction, "cteDadosMsg"));
body.setPrefix(""); // já tentei com null tbm
Marshaller marshaller = null;
marshaller = JAXBContext.newInstance(clazz).createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.FALSE);
marshaller.setProperty(Marshaller.JAXB_ENCODING, "utf-8");
marshaller.marshal(object, body);
mensagem.saveChanges();
ByteOutputStream stream = new ByteOutputStream();
mensagem.writeTo(stream);
return stream.toString();
}
Mensagem
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header><cteCabecMsg xmlns="http://www.portalfiscal.inf.br/cte/wsdl/CteStatusServico"><cUF>51</cUF><versaoDados>1.01</versaoDados></cteCabecMsg></SOAP-ENV:Header><Body xmlns="http://schemas.xmlsoap.org/soap/envelope/"><cteDadosMsg xmlns="http://www.portalfiscal.inf.br/cte/wsdl/CteStatusServico"><ns3:consStatServCte xmlns:ns3="http://www.portalfiscal.inf.br/cte" versao="1.01"><ns3:tpAmb>2</ns3:tpAmb><ns3:xServ>STATUS</ns3:xServ></ns3:consStatServCte></cteDadosMsg></Body></SOAP-ENV:Envelope>
Alguém ja passou por isso?
Grato
[ ]'s
