Здравствуйте, помогите разобраться с взаимодействием с Web-севисом по протоколу SOAP на .net.
Есть сервис, который поддерживает протокол SOAP+WSE 2.0
Доступ к этому сервису осуществляется по защищенному каналу SSL.
Wsld c описанием сервиса есть.
С .net опыт крайне скудный, поэтому не кидайтесь гнилыми помидорами, в поиск прошу не отправлять, т.к. только что от него, так без каких-то пояснений и конкрентных ссылок все равно ничего не пойму
.
Как пытаюсь решать задачу:
1. Сгенерировал модуль при помощи утилиты wsdl.exe
2. Поменял родительский класс сервиса с System.Web.Services.Protocols.SoapHttpClientProtocol на Microsoft.Web.Services2.WebServicesClientProtocol
3. Для эмуляции сервиса и отладки использую SoapUI. Сделал на основе описания сервиса проект, запустил тестовый сервис (пока без SSL, о нем вопросы ниже).
Дальше начал смотреть что и как меняется в запросе если настраивать RequestSoapContext.Security.
Если запустить без настройки – обычный SOAP запрос
Если добавть .Security.Tokens.Add в запросе появляется <wsse:BinarySecurityToken>
Если добавлять .Security.Elements.Add(new MessageSignature(…)), то добавляется элемент <Signature> c подписями различных элементов запроса.э
Как только я добавляю svc.RequestSoapContext.Security.Elements.Add(new EncryptedData(…));
Ловлю Ошибку «Клиент обнаружил тип содержимого ответа "text/html; charset=iso-8859-1", но ожидается тип "text/xml".»
Не удивлюсь, что это проблема моего способа эмуляции Сервиса.
Отсюдя Вопрос 1: Можно как-то еще узнать, какие запросы посылает моя програмка, чтобы посмотреть, что меняется при моих манипуляциях?
Вопрос 2.
Как я понимаю Security.Elements.Add() в качестве аргумента должен получать класс реализующий интерфейс ISecurityElement?
Можно как-то быстро в MSDN найти все классы, которые реалиуют выбранный интерфейс?
это нужно, чтобы я мог поглядеть все возможности по настройке RequestSoapContext, и соотнести со стандартом WS-Security (чуть почитал вот это
http://www.oasis-open.org/committees/download.php/16790/wss-v1.1-spec-os-SOAPMessageSecurity.pdf))
Последний мой вопрос.
Как настраивать сообщение по защищенному SSL каналу?
По SSL работал только на delphi,
примерно так: есть специальный класс, в котором указать разного рода сертификаты, при помощи этого класса настраивался класс для работы по протоколу http. При помощи последнего посылаются post запросы.
Правда в этом случае приходется рисовать Soap самому
, думаю с поддежкой WS-security – это крайне неприятно.