我对 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 运行时,子节点项索引似乎正在发生变化。
我将需要我的其他操作(如注销等)的请求数据中的签名值。
提前致谢