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

时间:2018-11-21 10:46:14

标签: java xml web-services soap

我需要肥皂网络服务的两个响应,我应该得到第一个响应,并在一段时间后基于第一个响应中的元素(在我的情况下为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>

1 个答案:

答案 0 :(得分:0)

我认为这是不可能的,因为对一个请求有一个响应,HTTP(S)是一对一的。通过使用HTTP状态代码100(继续),您可能能够利用漏洞。状态码100表示​​; “到目前为止一切都很好,但是更多的信息即将到来”。然后,您的客户端应继续等待最终的SOAP响应;然后状态代码为200(确定)或500(错误)。尽管从理论上讲可以使用其他应用程序协议(例如JMS,SMTP或FTP)来传输SOAP消息,但实际上通常是HTTP(S)。

话虽如此,我认为您不应该走状态码100的路线,而应该重新思考您的方法,坚持“对一个请求的一个响应”。上面的代码很难实现。