[quote=realjn][quote=realjn][quote=realjn]Amigos,
Preciso consumir um WebService no padrão SOAP 1.2 com apache AXIS 1.4 - um framework que estou usando pela primeira vez. Por uma questão de ordem prática o acesso é feito via DII (Dynamic Invocation Interface) ao invés do uso de stubs gerados via WSDL2Java, etc. Acontece que ao examinar o envelope gerado observei que o AXIS está emitindo tags no padrão SOAP 1.1 ao invés de SOAP 1.2 o que não é o esperado pelo webservice.
Minha pergunta é: como configurar o AXIS para que este utilize o padrão SOAP 1.2 ao invés do SOAP 1.1 ?
A documentação informa que o AXIS 1.4 é compatível com SOAP 1.2 mas não deixa claro como ativar este modo. Sei que o AXIS2 faz isso com o pé nas costas, mas não temos tempo disponível para migrar de framework…
Alguém com experiência em AXIS poderia me ajudar ?
Abraços[/quote]
Amigo isso é tão simples que até doi. Veja:
call.setSOAPVersion(SOAPConstants.SOAP12_CONSTANTS);
call.setEncodingStyle(Constants.URI_SOAP12_ENV);
A chamada em negrito está dizendo ao objeto Call que o envelope gerado estará em conformidade com o SOAP 1.2. Veja um exemplo:
<?xml version=“1.0” encoding=“UTF-8”?>
<soapenv:Envelope xmlns:soapenv=“http://www.w3.org/2003/05/soap-envelope”
xmlns:xsd=“http://www.w3.org/2001/XMLSchema” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”>
<soapenv:Header>
<nfeCabecMsg soapenv:role="" soapenv:mustUnderstand=“false”
xmlns=“http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2”>
<versaoDados>2.00</versaoDados>
<cUF>29</cUF>
</nfeCabecMsg>
</soapenv:Header>
<soapenv:Body>
<ns1:nfeDadosMsg
xmlns:ns1=“http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2”>
<consStatServ versao=“2.00”
xmlns=“http://www.portalfiscal.inf.br/nfe”>
<tpAmb>2</tpAmb>
<cUF>29</cUF>
<xServ>STATUS</xServ>
</consStatServ>
</ns1:nfeDadosMsg>
</soapenv:Body>
</soapenv:Envelope>
Observe que em conformidade com o SOAP 1.2, por padrão o envio do header está desabilitado por ser opcional. Caso o serviço exija o header você terá que incluí-lo - o que também é muito simples (ver org.apache.axis.message.SOAPHeaderElement).
Enfim, com AXIS 1.4 é perfeitamente possível consumir webservices SOAP 1.2 utilizando DII ao invés de Stubs gerados via WSDL4Java - Nao precisa sair correndo para o AXIS-2 não ![/quote]
Valeu e obrigado pela ajuda ! agora estou conseguindo consumir o WS sem problema. A propósito, trata-se de um sistema de emissão de NF-e que usa AXIS 1.4. Com a mudança para o padrão SOAP 1.2 achei que teria de migrar para o AXIS 2 mas isso não será necessário.
Obrigado pelo apoio…[/quote]
teria como postar seu código pq aqui ta uma tristesa para fazer isso ai funcionar em axis 1.4