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



              


Сетевые потоки


Сетевые потоки

Среди областей, в которых особенно наглядно проявляются возможности абстрактной модели потока, особое место занимает пересылка информации в Интернете. Работа с низкоуровневым кодом HTML и XML почти не требует усилий со стороны программиста. Хотя в этом разделе мы сможем дать лишь общее представление об этой важной теме и о задействованных пространствах имен, по крайней мере вы увидите, как потоковая интерпретация сетевых данных реализуется на практике. В рассмотренном ниже примере мы передаем информацию на web-сайт и получаем непосредственный HTML-код новой страницы в качестве результата запроса. Анализ полученного HTML-кода приносит нужную информацию.

Мы не смогли устоять перед искушением: наше маленькое приложение обращается на сайт Amazon.com и возвращает текущие сведения о количестве проданных экземпляров нашей книги. Обобщенный алгоритм выглядит следующим образом:

  • Создать объект URI (Universal Resource Locator) передачей строкового параметра конструктору класса URI.

  • Передать объект URI методу Create класса HttpWebRequest, чтобы инициировать выдачу запроса HTTP.

  • Вызвать метод GetResponse класса HttpWebRequest и получить поток.

  • Проанализировать полученный поток, содержащий HTML-код, и извлечь из него нужную информацию, для чего необходимо знать структуру страницы. Кстати, это одна из причин, по которым для получения данных удобнее использовать web-службы: если Amazon неожиданно сменит структуру своих страниц, наше приложение перестанет работать.

    В данном случае страница генерируется следующей строкой запроса, которая и будет использована для создания объекта URI (в конце строки приведен номер ISBN нашей книги):

    http://www.amazon.com/exec/obidos/ASIN/1893115992

    Следующий конструктор создает экземпляр класса с номером ISBN, переданным в виде строкового параметра:

    Public Sub New(ByVal ISBN As String)

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

    End Sub

    Доступное только для чтения свойство GetRank нашего класса просто вызывает закрытую функцию, основной код которой приведен в следующих восьми строках:



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