Ola, estou fazendo uma comunicação com um WebService e ele me retorna a mensagem soap…
Como faço para pegar os valores que ele me retorno e usa-lo?
[code]Source source = new DOMSource(res.getSOAPPart().getEnvelope().getBody().getFirstChild().getFirstChild());
TransformerFactory.newInstance().newTransformer().transform(source,new StreamResult(sw));
System.out.println(soapMessage);
ByteArrayOutputStream out = new ByteArrayOutputStream();
res.writeTo(out);[/code]
Até ai eu imprimo o out e tem a resposta certinho, mas como faz para pegar exatamente os campos? :S
Valeu, T+
Minha sugestão é usar uma ferramenta para geração do client do webservice.
Por exemplo o Axis 2
Funciona assim, a partir da descrição do serviço (WSDL) são geradas classes para chamada a webservice, junto com todos os objetos de entrada ou retorno dos serviços.
Seu código então pode chamar o webservice como se fosse um objeto comum.
Ah! Aqui tem um exemplo:
http://www.guj.com.br/articles/180
No tutorial ele implementa o webservice do lado Server e também o Client, você usa o que precisar
Mas a mensagem soap eu ja consigo, oque falta é só eu conseguir manipula-la e pegar os dados que quero dela
:S
?
Segue a msg soap que o Web Service me retorna:
<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<ns1:executarSolicitacaoResponse
xmlns:ns1="http://service.datasus.org/" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<executarSolicitacaoReturn href="#id0" />
</ns1:executarSolicitacaoResponse>
<multiRef xmlns:ns2="http://service.datasus.org/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" id="id0"
soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xsi:type="ns2:AutorizacaoDTO">
<arrMedicamentoDTO soapenc:arrayType="ns2:MedicamentoDTO[1]"
xsi:type="soapenc:Array">
<arrMedicamentoDTO href="#id1" />
</arrMedicamentoDTO>
<coSolicitacaoFarmacia xsi:type="xsd:string">1</coSolicitacaoFarmacia>
<descMensagemErro xsi:type="xsd:string">Solicitação
pré-autorizada.</descMensagemErro>
<inAutorizacaoSolicitacao xsi:type="xsd:string">00S</inAutorizacaoSolicitacao>
<noPessoa xsi:type="xsd:string">Nome - CPF/CNPJ: 00158404105</noPessoa>
<nuAutorizacao xsi:type="xsd:string">952.296.783.812.020</nuAutorizacao>
</multiRef>
<multiRef xmlns:ns3="http://service.datasus.org/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" id="id1"
soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xsi:type="ns3:MedicamentoDTO">
<coCodigoBarra xsi:type="xsd:string">7896004726847</coCodigoBarra>
<dsUnidApresentacao xsi:type="xsd:string">COMPRIMIDO</dsUnidApresentacao>
<inAutorizacaoEstorno xsi:nil="true" xsi:type="xsd:string" />
<inAutorizacaoMedicamento xsi:type="xsd:string">00SM -
Medicamento pré-autorizado.</inAutorizacaoMedicamento>
<qtAutorizada xsi:type="xsd:double">4.0</qtAutorizada>
<qtDevolvida xsi:type="xsd:double">0.0</qtDevolvida>
<qtEstornada xsi:type="xsd:double">0.0</qtEstornada>
<qtPrescrita xsi:type="xsd:double">1.0</qtPrescrita>
<qtSolicitada xsi:type="xsd:double">4.0</qtSolicitada>
<statusTransacao xsi:nil="true" xsi:type="xsd:string" />
<vlPrecoSubsidiadoMS xsi:type="xsd:double">12.6</vlPrecoSubsidiadoMS>
<vlPrecoSubsidiadoPaciente xsi:type="xsd:double">1.4</vlPrecoSubsidiadoPaciente>
<vlPrecoSubsidiadoPacientePosEstorno
xsi:type="xsd:double">0.0</vlPrecoSubsidiadoPacientePosEstorno>
<vlPrecoVenda xsi:type="xsd:double">14.0</vlPrecoVenda>
<vlrSubsidiadoMSPosEstorno xsi:type="xsd:double">0.0</vlrSubsidiadoMSPosEstorno>
<vlrTotalVendaPosEstorno xsi:type="xsd:double">0.0</vlrTotalVendaPosEstorno>
</multiRef>
</soapenv:Body>
</soapenv:Envelope>
Quero pegar esses dados, como fazer isso?
Alguem??? :S