如何在soapweb服务中为单个请求获得两个响应



我需要来自soapweb服务的两个响应,在那里我应该得到第一个响应,经过一段时间后,根据第一个响应中的元素(在我的情况下是ResponseCode(,第二个响应应该来了。以下是我需要的来自soap web服务的2个响应示例

Response1:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:req="http://cp.abc.com/cpinterface/request"> 
<soapenv:Header/> 
<soapenv:Body> 
<req:ResponseMsg><![CDATA[<?xml version="1.0" encoding="UTF-8"?> 
<Response> 
<ResponseCode>0</ResponseCode> 
<ResponseDesc>The service request is processed successfully.</ResponseDesc> 
<ServiceStatus>0</ServiceStatus> 
</Response>]]></req:ResponseMsg> 
</soapenv:Body> 
</soapenv:Envelope>
Response2:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
<soapenv:Header/> 
<soapenv:Body> 
<res:ResultMsg xmlns:res="http://cp.abc.com/cpinterface/result"><![CDATA[<?xml version="1.0" encoding="UTF-8"?> 
<Result> 
<ResultType>0</ResultType> 
<ResultCode>0</ResultCode> 
<ResultDesc>Process service request successfully.</ResultDesc> 
<ResultParameters> 
<ResultParameter> 
<Key>EndDate</Key> 
<Value>20140103</Value> 
</ResultParameter> 
<ResultParameter> 
<Key>EndTime</Key> 
<Value>210156</Value> 
</ResultParameter> 
<ResultParameter> 
<Key>Fee</Key> 
<Value>0.89</Value> 
</ResultParameter> 
</ResultParameters> 
</Result>]]></req:ResultMsg> 
</soapenv:Body> 
</soapenv:Envelope>

我认为这是不可能的,HTTP(s(是一对一的,即对一个请求有一个响应。通过使用HTTP状态代码100,您可能会利用潜在的漏洞(继续(。状态代码100表示;'Sofar一切都很好,但更多的信息即将到来。然后,您的客户端应该继续等待最终的SOAP响应;其然后具有状态代码200(OK(或500(Error(。尽管在理论上可以使用不同的应用程序协议(例如JMS、SMTP或FTP(来传输SOAP消息,但在实践中通常是HTTP(S(。

话虽如此,我认为你不应该走statuscode 100的路线,而是重新思考你的方法,坚持"一个请求一个回应"。以上内容将非常棘手且难以实现。

最新更新