Еженедельник Свет в Интернет

Главная

Новости

Статьи и обзоры
  Горожанин
  Обнинск в Internet
  Web Design
  Hardware
  Software
  Безопасность
  Серфинг
  Игродром
  Relax
  Технологии
  Web-обзор
  Интернет-ликбез
  Опросник
  УП-Технологии
  ART.net

Ссылки

Архив

О нас

Контакты

Форумы


Основатель:
К.Николаенко

Главный Редактор:
С.Коротков

Web Design:
Neutron


Наш спонсор






Порт POPULAR.RU
POPULAR.RU RegionalBanner Network.






Океан


НПП Метра - промышленные электронные автомобильные вагонные весы
Goldy Interior - салон офисной мебели: кабинеты руководителей, мебель для персонала

= Технологии =

ВВЕДЕНИЕ В ВЕБ-СЕРВИСЫ

Андрей Филёв, Михаил Плизкин

продолжение: начало в #31(143)

Остановимся на первом способе (SOAP-запрос). Первые четыре строчки - обычный POST-заголовок. Основной интерес для нас представляет включенный в тело запроса XML-документ. Его элементами являются и , в которые включен вызов метода getUserGroups. Как видим, у этого метода нет параметров.
Вызов метода посложнее (со строковым аргументом) выглядит так:
<?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>
<FindUserGroupsByName
xlmns="http://dotsite.spb.ru/webservices/">
<name>string</name>
</FindUserGroupsByName>
</soap:body>
</soap:Envelope>


Теперь давайте посмотрим, как мог бы выглядеть ответ на данный запрос:

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-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:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<FindUserGroupsByNameResponce
xmlns="http://www.dotsite.spb.ruwebservices/">
<FindUserGroupsByNameResult>
<UserGroup>
<Name>string</Name>
<Mission>string</Mission>
<Country>string</Country>
<State>string</State>
<City>string</City>
<FoundationDate>dateTime</FoundationDate>
<Administrator>
<FirstName>string</FirstName>
<LastName>string</LastName>
<Email>string</Email>
<Password>string</Password>
<UserName>string</UserName>
<RoleName>string</RoleName>
<ID>string</ID>
<ICQ>string</ICQ>
</Administrator>
<ID>int</ID>
</UserGroup>
<UserGroup>
<Name>string</Name>
<Mission>string</Mission>
<Country>string</Country>
<State>string</State>
<City>string</City>
<FoundationDaste>dateTime</FoundstionDate>
<Administrator>
<FirstName>string</FirstName>
<LastName>string</LastName>
<Email>string</Email>
<Password>string</Password>
<UserName>string</UserName>
<RoleName>string</RoleName>
<ID>string</ID>
<ICQ>string</ICQ>
</Administrator>
<ID>int</ID>
</UserGroup>
</FindUserGroupsByNameResult>
</FindUserGroupsByNameResponce>
</soap:Body>
</soap:Envelope>

Синим цветом выделены поля, в которые будут подставлены значения соответствующего типа.
В оригинале (в программном коде сервиса) метод выглядел следующим образом:
[WebMethod (Description="Находит группы по названию")]
public UserGroup[] FindUserGroupsbyName(string name) {
UserGroup[] groups =
UserGroup.GetUserGroupsFromDataSet
(UserGroup.GetUserGroupsByName(name));
foreach (UserGroup group in groups)
ServiceAccessChecker.CutHiddenData(group);
return groups;
}
Как видим, массив объектов в SOAP представляется достаточно просто - в виде последовательно расположенных соответствующих им XML-структур. Имена тегов в этих структурах соответствуют именам полей в объектах.
Приведенный выше сервис написан на языке С#. Рассмотрим более сложный пример для того, чтобы детально проиллюстрировать процесс создания веб-сервисов с помощью .NET.

Продолжение следует.


Copyright © Свет в Internet   Designed by Свет в Internet