Клиентская часть
Лабораторная работа № 12
Создание клиентского приложения с использованием метода POST протокола HTTP
Сервис
Создайте Web-сервис, который по запросу пользователя будет выдавать текущую дату или комбинацию даты и времени. Для этого в среде разработки Visual Studio 2010 следует выполнить команду меню Файл | Создать проект | и в появившемся диалоговом окне Создать проект в поле Установленные шаблоны выбрать Visual Basic и Веб. В верхнем поле выбрать .NET Framework 2.0. В поле Шаблоны выделить значок Приложение веб-служб ASP.NET. В поле Имя следует указать наименование создаваемого проекта. Укажите имя MyService1 и щелкните ОК. После того, как все необходимые приготовления средой разработки будут сделаны, на основном рабочем поле появится страница с проектом MyService1. Как можно заметить, эта страница имеет наименование Servicel.asmx.vb, а ее содержимое полностью совпадает с содержимым подобной страницы проекта MyService, созданного в лабораторной работе №11. Ну что поделаешь. Так заложено в Visual Studio 2010.
Очевидно, что для реализации заданного сервиса в листинге Servicel.asmx.vb вместо функции HelloWorld необходимо задать функцию, реализующую поставленную задачу. Назовем эту функцию MyDate и опишем ее следующим образом:
Листинг 12.1
Public Function MyDate(ByVal ShowTime As Boolean) As String
If ShowTime Then
MyDate = Date.Now
Else
MyDate = Date.Today
End If
End Function
В объявлении функции указано, что она будет воспринимать параметр ShowTime логического типа Boolean. В том случае, если функции передано значение True, клиенту будет возвращено значение, в которое входит и текущая дата и время вызова функции. Для этого используется свойство Now, входящее в состав типа Date. Если же функция в качестве параметра получает значение False, то клиентскому приложению возвращается только дата, что производится при помощи свойства Today.
Выполнив замену функций в файле Servicel.asmx.vb, получим представление этого файла в виде, приведенном на рисунке 12.1.
Рис.12.1. Внешний вид страницы Servicel.asmx.vb с функцией MyDate
Создание Web-сервиса не явилось сложной задачей. Теперь протестируем его работу. После компиляции обратимся к нему из браузера, нажав клавишу F5. На рис. 12.2 приведен внешний вид Web-страницы, которая генерируется Web-сервером при попытке обращения к Web-сервису.
Рис.12.2. Внешний вид Web – страницы, соответствующей Web – сервису
После щелчка мышью на ссылке, указывающей на функцию MyDate, в браузере будет отображена Web- страница, предоставляющая доступ к этой функции. Внешний вид этой Web-страницы показан на рис. 12.3.
Рис.12.3. Web – страница, предоставляющая пользователю доступ к функции MyDate
На этой странице расположено поле ввода, в котором пользователь может указать значение параметра, передаваемого функции, и кнопка Запуск, при нажатии на которую этот параметр будет передан функции сервиса, и в браузер будет отправлен результат работы сервиса.
В поле текстового ввода необходимо внести значение параметра ShowTime. Кстати, наименование параметра также указано на странице, рядом с соответствующим полем ввода. Тип параметра указан в блоках кода для клиентских приложений.
Итак, мы знаем, что наша функция воспринимает логический параметр типа Boolean. Поэтому в поле ввода можно ввести значение True, что мы и сделаем. После того как искомое значение будет введено в текстовое поле и нажата кнопка Запуск,браузер отобразит Web-страницу с результатом работы функции сервиса. Внешний вид этой страницы показан на рис. 12.4.
Рис.12.4. Web-страница с результатом работы функции при ShowTime= True
Если же, перезапустив Web – сервис, ввести в поле ввода значение False и нажать кнопку Запуск, то получим результат, приведенный на рис.12.5.
Рис.12.5. Web-страница с результатом работы функции при ShowTime= False
Здесь необходимо заметить, что, как и в предыдущей лабораторной работе, результатом работы созданного Web – сервиса является XML – документ.
И так, констатируем, что тестирование вновь созданного сервиса прошло успешно. Теперь необходимо определиться с его размещением. Для упрощения проблемы выберем локальное размещение сервиса и клиента на одном компьютере, т.е. создадим архитектуру локальной информационной системы. Чтобы выполнить локальное размещение Web – сервиса, требуется вернуться к странице, приведенной на рисунке 12.1, и выполнить следующие настройки:
- В обозревателе решений два раза щелкнуть ЛКМ по строчке MyProject. Откроется закладка с названием проекта MyService1, приведенная на рисунке 12.6.
Рис.12.6. Внешний вид страницы MyService1
- На выбранной закладке в левом поле выбрать Веб, а в правом поле, используя полосу прокрутки, установить радиокнопку Использовать локальный веб–сервер IIS. В текстовом поле URL–адрес проекта: появится локальный URL–адрес http://localhost/MyService1.
- Щелкнуть ЛКМ по кнопке Создать виртуальный каталог.
- Закрыть закладку MyService1.
- Выполнить компиляцию проекта MyService1.
- Закрыть Visual Studio 2010.
Теперь можно приступить к разработке клиентского приложения, вызывающего данный сервис.
Клиентская часть
Пока что перед клиентом поставим задачу только запуска в работу нашего сервиса, без приема от него результата его работы. Пусть первое клиентское приложение использует метод POST протокола HTTP для передачи запроса Web – сервису.
Если обращаться к методуPOST,тоследует признать, что нет нужды создавать отдельное приложение, которое бы формировало HTTP-запросы по правилам этого метода. У нас уже есть такое приложение — обычный браузер. Достаточно лишь создать для него соответствующую Web-страницу. Это будет намного быстрее и проще, нежели разрабатывать отдельное приложение, которое должно будут самостоятельно создавать НТТР-запрос, отправлять его на сервер, получать ответ на языке XML и извлекать из него данные. Поэтому начнем с создания обычной Web-страницы.
Как известно, метод POST позволяет передавать данные, введенные пользователем в HTML-форме. Следовательно, нам придется на Web-странице создать форму, внешний вид которой приведен на рисунке 12.7.
Рис. 12.7. Клиентская Web – страница, работающая с методом POST
Так как параметр имеет логический тип, будет правильно создать группу из двух переключателей. Передаваемое значение может быть или True или False, и именно эти значения будет возвращать переключатель. Однако помимо значения параметра, необходимо передать Web-сервису и его наименование. Как известно, при передаче данных от браузера на сервер, они указываются в виде последовательности пар “имя=значение”, где перед знаком равенства указывается наименование органа ввода данных. Следовательно, для передачи правильной пары нам необходимо группу переключателей назвать ShowTime. В результате HTML-код клиентской Web-страницы, передающей информацию при помощи метода POST, будет выглядеть так, как это показано в листинге 12.2.
return false">ссылка скрытаЛистинг 12.2
<!DOCTIPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/htm14/strict.dtd">
<htm1>
<head>
<title> POST-клиент</title>
</head>
<body>
<form METHOD="POST"
ACTION="http://localhost/MyService1/Service1.asmx/MyDate">
<p>Отображать помимо даты еще и время?</p>
<p><input TYPE="RADIO" NAME="ShowTime" VALUE="true" CHECKED> Да
<input TYPE="RADIO" NAME="ShowTime" VALUE="false"> Нет </p>
<input TYPE="SUBMIT" VALUE="Подтвердить"
</form>
</body>
</htm1>
Ну а теперь, наконец-то, приступаем к созданию первого (и надеюсь не последнего в вашей жизни) клиента. Для этого набираем в Блокноте текст листинга 12.2, присваиваем полученному файлу имя clientpost с расширением html, выбираем Тип файла: Все файлы и сохраняем файл на рабочем столе.
Вот и все. Осталось дело за малым – проверить локальную информационную систему в работе. Для этого щелкаем на рабочем столе по ярлыку clientpost. На экране появляется Web – страница, приведенная на рис. 12.7. и соответствующая нашему клиенту. Щелкаем радиокнопку Да и нажимаем кнопку Подтвердить.На экране видим Web – страницу, подобную рисунку 12.4, но с текущими датой и временем.
Очевидно, что при взведенной радиокнопке Нети нажатии кнопки Подтвердить на экране можно увидеть только дату.
Вот теперь совсем всё!