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

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

Результат представлен в формате XML, что позволяет легко проанализировать данные в программе. Также обратите внимание на то, что в автоматически сгенерированном коде показано, как обращаться к web-службе за пределами IDE. Для этого необходимо лишь сгенерировать правильный запрос HTTP GET или SOAP. Ниже приведен пример построения запроса GET в консольном приложении, использующем для отправки запроса GET классы WebRequest и WebResponse пространства имен System.Net:

1 Imports System.Net
2 Imports System.IO
3 Module Module1
4 Sub Main()
5 Dim myResponse As WebResponse
6 Try
7 Dim myWebServiceRequest As WebRequest
8 myWebServiceRequest – WebRequest.Create _
9 ("http://localhost/WebServicel/Servicel.asmx/GetWeather?dty=SeattIe")
10 myResponse = _
11 myWebServiceRequest.GetResponse()
12 Dim theAnswer As String
13 Dim aStream As New StreamReader
(myResponse.GetResponseStream)
14 theAnswer = aStream.ReadToEnd
15 MsgBox(theAnswer)
16 Catch e As Exception
17 Console.WriteLine(e.Message)
18 Finally
19 myResponse. Close()
20 End Try
21 End Sub
22 End Module

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

Иллюстрированный самоучитель по Visual Basic .NET › Краткий обзор ASP.NET › Использование web-службы на стороне клиента
Рис. 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
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.