繁体   English   中英

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

[英]How to get two responses for a single request in soap web services

我需要来自soap Web服务的两个响应,我应该在其中得到第一个响应,并在一段时间后基于第一个响应中的元素(在我的情况下为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表示​​; “到目前为止一切都很好,但是更多的信息即将到来”。 然后,您的客户端应继续等待最终的SOAP响应; 然后状态代码为200(确定)或500(错误)。 尽管从理论上讲,可以使用其他应用程序协议(例如JMS,SMTP或FTP)来传输SOAP消息,但实际上通常是HTTP(S)。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM