В чем разница между этими двумя SOAP-запросами? - PullRequest
2 голосов
/ 25 августа 2011

Я отправляю запрос в SOAP API и, к сожалению, мои знания SOAP ограничены. Следующие два запроса возвращают ответ, но ответ отличается. Неработающий пример возвращает только send_fax_response. Рабочая возвращает send_fax_response и send_fax_result. Есть идеи, почему? Может ли это быть заказ?

Не работает

SOAP request: https://faxregistration.com/SfaxWS/SfaxAPI.asmx
SOAPAction: "http://tempuri.org/sendFax", Content-Type: text/xml;charset=UTF-8, User-Agent: sfax-api gem 0.0.1
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:wsdl="http://tempuri.org" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ins0="http://tempuri.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
  <env:Body>
    <ins0:sendFax>
      <ins0:xDoc>
        <FaxRequest>
          <DocMerge>false</DocMerge>
          <RecipientFax>555.123.4567</RecipientFax>
          <Password>test</Password>
          <UserId>test</UserId>
          <image>PGh0bWw+PGJvZHk+VGVzdCBGYXg8L2JvZHk+PC9odG1sPg==</image>
          <DocType>html</DocType>
          <RecipientName>test</RecipientName>
        </FaxRequest>
      </ins0:xDoc>
    </ins0:sendFax>
  </env:Body>
</env:Envelope>

Рабочая

SOAP request: https://faxregistration.com/SfaxWS/SfaxAPI.asmx
SOAPAction: "http://tempuri.org/sendFax", Content-Type: text/xml;charset=UTF-8, User-Agent: sfax-api gem 0.0.1
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <sendFax xmlns="http://tempuri.org/">
      <xDoc>
        <FaxRequest>
          <UserId>test</UserId>
          <Password>test</Password>
          <RecipientName>test</RecipientName>
          <RecipientFax>555.123.4567</RecipientFax>
          <DocType>html</DocType>
          <image>PGh0bWw+PGJvZHk+VGVzdCBGYXg8L2JvZHk+PC9odG1sPg==</image>
          <DocMerge>false</DocMerge>
        </FaxRequest>
      </xDoc>
    </sendFax>
  </soap:Body>
</soap:Envelope>

Ответы [ 3 ]

1 голос
/ 25 августа 2011

Я думаю, ваш сервер мыла ожидает тело, то есть <sendFax> будет иметь пространство имен http://tempuri.org, определенное внутри элемента.Если это так, изменение тела в запросе мыла not_working также может работать.

<ins0:sendFax ins0:"http://tempuri.org/">
  <ins0:xDoc>
    <FaxRequest>
      <DocMerge>false</DocMerge>
      <RecipientFax>555.123.4567</RecipientFax>
      <Password>test</Password>
      <UserId>test</UserId>
      <image>PGh0bWw+PGJvZHk+VGVzdCBGYXg8L2JvZHk+PC9odG1sPg==</image>
      <DocType>html</DocType>
      <RecipientName>test</RecipientName>
    </FaxRequest>
  </ins0:xDoc>
</ins0:sendFax>
1 голос
/ 26 августа 2011

Я использую Savon для Rails. Мой запрос SOAP всегда терпит неудачу, и я заметил, что рабочий пример имеет soap: Envelope , в то время как мой сгенерированный запрос имеет env: Envelope . Как я могу превратить мой неработающий SOAP-запрос в работающий SOAP-запрос? Помогите пожалуйста:)

1 голос
/ 25 августа 2011

Первое, что я заметил, это то, что первая строка вашего запроса - env:Envelope в примере "Не работает" и soap:Envelope в примере "Работает".

Кроме этого, в этом теге также отсутствует пара атрибутов. Они могут быть важны, но я считаю, что наименование этого внешнего элемента вызывает поломку.

...