Использование HTTP POST (www-form-encoded) против ASP.NET ASMX с Soap-аутентификацией - PullRequest
3 голосов
/ 24 мая 2011

Я работаю над интеграцией с 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&parameter=string

ClientCredentials=<username>user</username><password>pass</password>&parameter=string

а также различные разновидности HTTP-аутентификации. Кажется, ничего не работает, и поддержка, которую мы получаем, бесполезна - они буквально не могут сказать нам, как их веб-сервис даже функционирует.


Кто-нибудь имел опыт в этом деле?

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