0

我对 JAX-WS 很陌生,我想在我的 Soap 处理程序的响应数据中获得一个值,但我不知道如何。

以下是 XML 中的肥皂响应:

    <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();

当我在我的项目中使用相同的代码时......结果始终为空。

有没有一种方法可以从响应数据中导航并获取...的值<Signature>……当作为独立应用程序运行和通过 tomcat 运行时,子节点项索引似乎正在发生变化。

我将需要我的其他操作(如注销等)的请求数据中的签名值。

提前致谢

4

0 回答 0