Записи с тегом «SOAP»

Specified-поля в SOAP веб-сервисах

27.05.2011 16:52 / Артём Волк / 443 просмотра / ...

В уже упоминавшемся ASP.NET-приложении, которое использует сторонний SOAP-веб сервис, для генерации proxy-классов использует механизм, доступный из Visual Studio как «Add Web Reference». После обновления до Visual Studio 2010 SP1 для элементов, объявленных в WSDL с аттрибутом minOccurs="0" с типом, отличным от type="xsd:string", например, так:

<xsd:element minOccurs="0" name="MyField" type="xsd:boolean" />

В proxy-классах генерировалось дополнительное свойство bool MyFieldSpecified. Если не поставить его в true перед вызовом веб-сервиса, поле не будет включено в SOAP-запрос. В моём случае изменить веб-сервис не было возможности (он сторонний), а все поля в вызове сервиса на самом деле обязательные. Найденные существующие решения либо требовали дополнительной обработки кода proxy-классов, либо ручного заполнения свойств или не подходили в моей ситуации.

решение...

Перехват и отладка запросов к SOAP веб-сервису в .NET

15.05.2011 22:39 / Артём Волк / 714 просмотров / ...

Одно из наших ASP.NET-приложений использует сторонний SOAP-веб сервис. На стороне .NET исторически (со времён .NET 2.0) для генерации proxy-классов использовался механизм, доступный из Visual Studio как «Add Web Reference» (подробнее о способах добавления ссылки на веб-сервис можно можно прочитать здесь, стоит только заметить, что в Visual Studio 2010 SP1 соответствующий пункт меню переехал внутрь диалогового окна «Add Service Reference»).

Во время отладки приложения понадобилось проверить XML-код SOAP-запроса. Сделать это оказалось довольно просто. Во-первых, в код приложения нужно временно добавить:

var myService = new MyServiceProxyClass();

// Перенаправляем запросы через HTTP-прокси
myService.Proxy = new System.Net.WebProxy("http://127.0.0.1:8888");

// Используем сервис как обычно...

Во-вторых, нужно запустить HTTP-прокси по указанному адресу. Мы использовали Fiddler, он позволяет просматривать весь HTTP-траффик, который через него проходит.

Решение для WCF-сервисов ещё не нашлось...

Быстрая эмуляция SOAP-запроса под Windows

28.10.2009 22:45 / Артём Волк / 983 просмотра / ...

Иногда нужно быстро выполнить SOAP-запрос не прибегая к какому-либо языку программирвония, например в тестовых целях. С помощью утилиты curl (есть сборка и под Windows) это можно довольно просто сделать:

curl.exe --header "Content-Type:text/xml;charset=utf8" --data "<?xml version='1.0' encoding='UTF-8'?><soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'><soap:Body><ns0:checkin xmlns:ns0='http://some_server/'><id>DSFDFDFSDFS</id><current_version></current_version></ns0:checkin></soap:Body></soap:Envelope>" http://example.com/SoapService/