Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторный практикум по веб-сервисам.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
1.71 Mб
Скачать

5.2.3Привязка soap к http

Спецификация SOAP позволяет осуществлять привязку ко многим транспортным протоколам, однако наиболее часто используемой является привязка на протокол HTTP.

Привязка к HTTP обеспечивает согласованность SOAP-сообщений с моделью сообщений HTTP и позволяет HTTP-серверам распознавать, что полученное сообщения является SOAP-сообщением. Следовательно, сервер сможет правильно обработать это сообщение, зная, что это именно SOAP-сообщение, а не просто XML документ или другая информация, которая может быть получена им от клиента.

Примером сообщений веб-сервиса интернет-магазина, передаваемых и получаемых им при обращении клиента к операции получения списка товаров в каталоге, могут служить следующие сообщения:

POST /order/WebShop.asmx HTTP/1.1

Host: localhost

Content-Type: application/soap+xml; charset=utf-8

Content-Length: 455

<?xml version="1.0" encoding="utf-8"?>

<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:xsd="http://www.w3.org/2001/XMLSchema"

xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">

<soap12:Body>

<GetGoods xmlns="http://www.mephi.ru/order">

<catalogId>1</catalogId>

</GetGoods>

</soap12:Body>

</soap12:Envelope>

Это был запрос к веб-сервису. А вот возможный вариант его ответа:

HTTP/1.1 200 OK

Content-Type: application/soap+xml; charset=utf-8

Content-Length: 807

<?xml version="1.0" encoding="utf-8"?>

<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:xsd="http://www.w3.org/2001/XMLSchema"

xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">

<soap12:Body>

<GetGoodsResponse xmlns="http://www.mephi.ru/order">

<GetGoodsResult>

<Good>

<Id>1</Id>

<Name>Celeron 2600</Name>

<Price>150</Price>

<Available>true</Available>

</Good>

<Good>

<Id>2</Id>

<Name>P4 3000</Name>

<Price>190</Price>

<Available>true</Available>

</Good>

</GetGoodsResult>

</GetGoodsResponse>

</soap12:Body>

</soap12:Envelope>

5.2.4Создание на платформе .Net клиентских приложений использующих веб-сервисы

Рассмотрим на примере описанного в предыдущей работе веб-сервиса, приветствующего вызывающего его человека по имени, то, каким образом реализовано взаимодействие с веб-сервисами из клиентских приложений на платформе .NET. Для этого добавим в решение проект типа «Windows Console Application». Для подключения веб-сервиса к этому проекту достаточно добавить в раздел «Web References» ссылку на созданный веб-сервис. При этом запускается мастер, который спрашивает адрес веб-сервиса, имя прокси класса и, после введения всей необходимой информации, генерирует сам прокси класс. После этого вызов веб-сервиса из любой точки программы сводится к нескольким строчкам, что демонстрирует простоту взаимодействия с веб-сервисами на платформе .NET:

using System;

using ServiceTest.HelloService;

namespace ServiceTest

{

class Program

{

static void Main(string[] args)

{

Console.WriteLine("Введинте имя:");

string name = Console.ReadLine();

Service service = new Service();

string response = service.Hello(name);

Console.WriteLine("Ответ: " + response);

Console.ReadLine();

}

}

}

Результат выполнения этой программы будет следующим:

Рис. 5.14. Результат работы клиентского приложения.