私は JAX-WS を初めて使用します。Soap Handler の応答データで値を取得したいのですが、方法がわかりません。
以下は、XML での SOAP 応答です。
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tsn="http://TestSession/BSCS_SessionManager" xmlns:ses="http://TestSession">
<soapenv:Header/>
<soapenv:Body>
<tsn:LogonResponse>
<ses:CS_ServiceHeader>
<SourceSystem>SRCSYS</SourceSystem>
<TargetSystem>TGTSYS</TargetSystem>
<ExternalID>20150525043213</ExternalID>
<AgentName>JOHNDOE</AgentName>
</ses:CS_ServiceHeader>
<ses:CS_LogonResponse>
<CS_LogonResponseData>
<Signature>b9n9+BWWvJ0=|Qe9HGWuQXKt8zb6oaIoseiyIMsdy+svIYASZJLEy6bhmICr4LkNkOHrvLeDWAItQ7YU17N0eRDq0X36Ls8GSXR75SDsovL6DjAgSpN0AuC/BEkTJcQjVft1buhqfiyMrHsoqMU9c2vM=</Signature>
</CS_LogonResponseData>
</ses:CS_LogonResponse>
<ses:Trailer>
<Version>0.0.1</Version>
</ses:Trailer>
</tsn:LogonResponse>
</soapenv:Body>
</soapenv:Envelope>
<Signature>
insideの値を取得したいと思います<CS_LogonResponseData>
。以下を使用しましたが、スタンドアロンアプリケーションでのみ機能するようです。
コード:
SOAPMessage soapMsg = context.getMessage();
SOAPBody body = soapMsg.getSOAPBody();
body.getChildNodes().item(0).getChildNodes().item(3).getChildNodes().item(1).getChildNodes().item(1).getTextContent();
プロジェクトで同じコードを使用すると、結果は常に null になります。
応答データからナビゲートして値を取得する方法はありますか<Signature>
...子ノード項目のインデックスは、スタンドアロンアプリケーションとして実行した場合とTomcat経由で実行した場合に変化しているようです。
他の操作 (ログアウトなど) のリクエスト データで署名値が必要になります。
前もって感謝します