Иллюстрированный самоучитель по VB.NET




Использование web-службы на стороне клиента - часть 2


Как было показано в главе 9, результат представляет собой поток данных, используемый для построения StreamReader (строка 13). Строка 14 читает в строковую переменную весь текст потока. Строка 19 закрывает объект запроса HTTP и освобождает все связанные с ним ресурсы. Кстати, переменная myResponse была объявлена в строке 5 именно потому, что при объявлении ее в блоке Try (строки 6-15) переменная оказалась бы недоступной для секции Fi nal ly. Результат выполнения программы показан на рис. 12.7.

Рис. 12.7. Результат обращения к web-службе с использованием запроса GET

С запросами SOAP дело обстоит несколько сложнее. Вряд ли кому-нибудь захочется генерировать их вручную. Вместо этого можно воспользоваться командой Project > Add Web Reference или утилитой командной строки wsdl.exe, входящей в поставку .NET Framework. Оба варианта приводят к одному результату — генерируется вспомогательный класс-посредник, который используется в программе.

Пожалуй, решение с утилитой командной строки отличается большей гибкостью. Ниже показано, как выглядела командная строка в нашем случае. Хотя приведенный пример разбит на две строки, его следует ввести в одной строке:

"С:\Program Fi1es\Microsoft.NET\FrameworkSDK\Bin\wsdl"/language:VB"

http://localhost/WebServicel/Servicel.asmx?wsdl

При запуске с ключом /language: VB утилита создает файл с кодом вспомогательного класса Servicel.vb, по умолчанию находящийся в одном каталоге с wsdl.exe (выходной каталог задается ключом out). Основной код сгенерированного класса выглядит так (ключевые строки выделены жирным шрифтом):

Option Strict Off

Option Explicit On

Imports System

Imports System.Diagnostics

Imports System.Web.Services

Imports System.Web.Servi ces.Protocols

Imports System.Xml.Serialization

'This source code was auto-generated by wsdl,Version=l.0.2914.16.

<System.Web.Servi ces.WebServi ceBi ndi ngAttri bute(Name:="ServicelSoap". [Namespace ]:="http://tempuri,org/")> _




Содержание  Назад  Вперед