Главная
Новости
Статьи и обзоры
Горожанин
Обнинск в Internet
Web Design
Hardware
Software
Безопасность
Серфинг
Игродром
Relax
Технологии
Web-обзор
Интернет-ликбез
Опросник
УП-Технологии
ART.net
Ссылки
Архив
О нас
Контакты
Форумы
Основатель: К.Николаенко
Главный Редактор: С.Коротков
Web Design: Neutron
|
|
= Технологии =
ВВЕДЕНИЕ В ВЕБ-СЕРВИСЫ
Андрей Филёв, Михаил Плизкин
продолжение: начало в #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.
Продолжение следует.
|
|