В чем разница между этими двумя SOAP-запросами?
Я отправляю запрос в 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 ответа
Первое, что я заметил, это то, что первая строка вашего запроса env:Envelope
в примере "Не работает" и soap:Envelope
в "рабочем" примере.
Помимо этого, есть несколько атрибутов, которые также отсутствуют в этом теге. Они могли бы быть важными, но я считаю, что наименование этого внешнего элемента вызывает поломку.
Я думаю, что ваш мыльный сервер ожидает тело, т.е. <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>
Я использую Savon для Rails. Мой SOAP-запрос всегда терпит неудачу, и я заметил, что в рабочем примере есть soap:Envelope, а в моем сгенерированном запросе env: Envelope. Как я могу превратить мой неработающий SOAP-запрос в работающий SOAP-запрос? Помогите, пожалуйста:)