我需要来自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的路线,而是重新思考你的方法,坚持"一个请求一个回应"。以上内容将非常棘手且难以实现。