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


Сетевые потоки - часть 2


1 Dim theURL As New URI(m_URL)

2 Dim theRequest As WebRequest

3 theRequest = WebRequest.Create(theURL)

4 Dim theResponse As WebResponse

5 theResponse = theRequest.GetResponse

6 Dim aReader As New StreamReader(theResponse.GetResponseStream())

7 Dim theData As String .

8 theData = aReader.ReadToEnd

В строке 1 создается объект класса URI. В строках 2 и 3 генерируется web-запрос, передаваемый на сайт Amazon.com. Строки 4 и 5 принимают ответ на запрос, а в строке 6 метод GetResponseStream класса Response конструирует объект StreamReader для полученного потока. На этой стадии строковая переменная theData содержит низкоуровневый HTML-код web-страницы нашей книги.

<font face=verdana.arial.helvetica size=-l>

<b>Amazon.com Sales Rank:</b>

5.776

</font><br>

Остается лишь проанализировать переменную theData и извлечь из нее данные о продажах. Для этого мы воспользуемся вспомогательной функцией Analyze:

Private Function Analyze(ByVal theData As String)As Integer

Dim Location As Integer

Location - theData.IndexOf("<b>Amazon.com Sales Rank:</b>")

+ "<b>Amazon.com Sales Rank:</b>".Length

Dim temp As String

Do Until theData.Substring(Location.l) = "<" temp = temp

StheData.Substring(Location.l)

Location += 1

Loop

Return CInt(temp)

End Function

Для анализа строковой переменной также можно воспользоваться классом регулярных выражений из пространства имен System.Text.

Ниже приведен полный код тестового модуля (разумеется, для тестирования вам также понадобится Интернет-соединение):

Option Strict On Imports System.IO Imports System.Net

Module Module1

Sub Main()

Dim myBook As New AmazonRanker("1893115992")

MsgBox("This book's current rank is " & myBook.GetRank)

End Sub

End Module

Public Class AmazonRanker

Private m_URL As String

Private m_Rank As Integer

Public Sub New(ByVal ISBN As String)

m_URL = "http://www.amazon.com/exec/obidos/ASIN/" & ISBN




- Начало -  - Назад -  - Вперед -



Книжный магазин