Как получить два ответа на один запрос в мыльных веб-сервисах - PullRequest
0 голосов
/ 21 ноября 2018

Мне нужны два ответа от мыльного веб-сервиса, где я должен получить первый ответ, и через некоторое время, основываясь на элементе (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 голосов
/ 21 ноября 2018

Я не думаю, что это возможно, HTTP (S) один на один в том смысле, что есть один ответ на один запрос.Существует потенциальная лазейка, которую вы можете использовать, используя код состояния HTTP 100 (продолжение).Код состояния 100 означает;«Софар, все хорошо, но больше информации».Затем ваш клиент должен продолжать ждать окончательного ответа SOAP;который затем имеет код состояния 200 (ОК) или 500 (Ошибка).Хотя теоретически можно использовать другой протокол приложения (например, JMS, SMTP или FTP) для передачи сообщений SOAP, на практике это обычно HTTP (S).

Сказав это, я думаю, вы не должныЧтобы не идти по маршруту с кодом 100, а вместо этого переосмыслить свой подход, придерживайтесь «одного ответа на один запрос».Вышеприведенное было бы очень хакерским и хитрым для реализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...