我需要肥皂网络服务的两个响应,我应该得到第一个响应,并在一段时间后基于第一个响应中的元素(在我的情况下为ResponseCode),第二个响应应该到来。以下是我需要通过肥皂网络服务提供的示例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>
答案 0 :(得分:0)
我认为这是不可能的,因为对一个请求有一个响应,HTTP(S)是一对一的。通过使用HTTP状态代码100(继续),您可能能够利用漏洞。状态码100表示; “到目前为止一切都很好,但是更多的信息即将到来”。然后,您的客户端应继续等待最终的SOAP响应;然后状态代码为200(确定)或500(错误)。尽管从理论上讲可以使用其他应用程序协议(例如JMS,SMTP或FTP)来传输SOAP消息,但实际上通常是HTTP(S)。
话虽如此,我认为您不应该走状态码100的路线,而应该重新思考您的方法,坚持“对一个请求的一个响应”。上面的代码很难实现。