soap信封标题中的重要值

时间:2017-08-31 09:20:56

标签: java web-services soap wsdl

有人可以向我解释为什么他们的Web服务开发人员有时会在邮件头中存储重要的变量吗?

例如:

<wsdl:message name="PSIMCmtplPaymentResponse">
<wsdl:part name="parameters" element="tns:PSIMCmtplPaymentResponse"/>
/wsdl:message>
<wsdl:message name="PSIMCmtplPaymentResponse_Headers">
<wsdl:part name="code" element="tns:code"/>
<wsdl:part name="message" element="tns:message"/>
<wsdl:part name="result" element="tns:result"/>
</wsdl:message>

在自动生成代码(Apache Axis2 wsdl2java)之后,使用从生成的类中提供给我的方法,无法获取存储在头文件中的变量的值。

因此,我必须使用不同的结构,如:

SOAPHeader header = service._getServiceClient().getLastOperationContext().
getMessageContext("In").getEnvelope().getHeader().getAttributeValue(
new QName("result"));`

而不是像:

PSIMCmtplPaymentResponse response = service.cmtplPayment(request);
String paymentResult = response.getResult()

除了付款请求之外,还可以同时调用对Web服务的其他一些请求,我害怕当方法

getMessageContext("In") 

被调用,来自完全不同的查询的值可能会出现在我身上。

我问这是因为这不是我第一次遇到这样的不便。这是一种普遍接受的协议或惯例吗?或者它只是Web服务开发人员的个人偏好?

0 个答案:

没有答案