Я работаю над интеграцией с ASP.NET WebService поставщика. Мы работаем на архитектуре, которая не позволяет легко использовать ресурсы SOAP. Тем не менее, наш поставщик поддерживает HTTP POST и HTTP GET (используя application / x-www-form-encoded - строки запроса). Проблема, с которой мы столкнулись - это аутентификация.
Для рассматриваемого WebService через SOAP требуется SoapHeader с узлом ClientCredentials, содержащим узлы имени пользователя и пароля. Мы предполагаем, что они используют мыльную аутентификацию. Как нам использовать этот Web-сервис без использования SOAP?
Пример запроса SOAP (согласно их WSDL):
POST /webservices/service1.asmx HTTP/1.1
Host: localhost
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length
<?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:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="https://localhost" xmlns:types="https://localhost/encodedTypes" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<types:ClientCredentials>
<username xsi:type="xsd:string">string</username>
<password xsi:type="xsd:string">string</password>
</types:ClientCredentials>
</soap:Header>
<soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<tns:Method>
<parameter xsi:type="xsd:string">string</parameter>
</tns:Method>
</soap:Body>
</soap:Envelope>
Аналогично .ASMX описывает доступность использования HTTP GET или HTTP POST следующим образом:
POST /webservices/service1.asmx/Method HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded
Content-Length: length
parameter=string
Обратите внимание, что выше не описывается какая-либо информация для аутентификации.
Мы пробовали такие вещи, как:
username=user&password=pass¶meter=string
ClientCredentials=<username>user</username><password>pass</password>¶meter=string
а также различные разновидности HTTP-аутентификации. Кажется, ничего не работает, и поддержка, которую мы получаем, бесполезна - они буквально не могут сказать нам, как их веб-сервис даже функционирует.
Кто-нибудь имел опыт в этом деле?