0

私は 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経由で実行した場合に変化しているようです。

他の操作 (ログアウトなど) のリクエスト データで署名値が必要になります。

前もって感謝します

4

0 に答える 0