有人可以向我解释为什么他们的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服务开发人员的个人偏好?