может быть эффективно, такие приложения очень быстро начинают походить друг на друга. Добавляя некоторый код GDI+, чтобы выполнить специальное рисование, можно выделить свое приложение и сделать его внешне более оригинальным. 

Глава 22

Доступ в Интернет

В главах 16–18 было показано, как использовать C# для создания мощных и эффективных динамических страниц Web с помощью ASP.NET, а также служб Web. Клиенты, обращающиеся к страницам ASP.NET, по большей части будут пользователями Internet Explorer или какого-либо другого браузера Web. Но иногда необходимо, чтобы создаваемые приложения действовали как клиенты Web. Это может быть, например, если нужно добавить в создаваемые приложения свойства просмотра Web, или, если необходимо, чтобы создаваемые приложения программным путем получали информацию с некоторых web-сайтов. В последнем случае обычно лучше, чтобы сайт реализовал службу Web, но при обращении к внешним сайтам возможно отсутствие контроля за тем, как реализован сайт, и поэтому может не быть другой возможности выбора, кроме программного доступа к сайту, который реализован как стандартные страницы HTML, ASP или ASP.NET.

Именно эту сторону картины мы кратко рассмотрим сейчас. В частности, будут представлены средства базовых классов .NET для использования различных сетевых протоколов, например HTTP для доступа к сетям и Интернету в качестве клиента. Мы обсудим следующие вопросы:

□ Запрос данных из Web и получение ответа от серверов

□ Отправку данных HTTP POST

□ Извлечение информации заголовка HTTP из ответов серверов

Коротко коснемся средств, существующих для прямого доступа к службам нижнего уровня, таким как отправка и получение пакетов TCP и ожидание приема на определенных портах.

Пространства имен System.Net и System.Net.Sockets содержат большинство базовых классов .NET, которые связаны с работой в сети с точки зрения клиента. Пространство имен System.Net обычно связано с операциями более высокого уровня, например загрузкой и выгрузкой файлов и выполнением запросов Web с помощью HTTP и других протоколов, в то время как System.Net.Sockets содержит классы, связанные с операциями более низкого уровня. Они более полезны при работе непосредственно с сокетами или такими протоколами, как TCP/IP, и используются по большей части для сокрытия соответствующей функции API Windows.

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

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

Класс WebClient 

Если необходимо выполнить запрос файла по определенному URL, то, скорее всего, самым простым классом .NET для использования в этом случае окажется System.Net.WebClient. Это класс максимально высокого уровня, созданный для выполнения базовых операций с помощью одной или двух команд. 

Загрузка файлов

Существует два способа загрузки файлов с web-сайта с помощью WebClient, в зависимости от того, хотим ли мы файл сохранить или обработать его содержимое файла непосредственно внутри приложения. Если нужно просто сохранить файл, то вызывается метод DownloadFile() . Этот метод получает два параметра: URL, из которого необходимо извлечь файл, и имя файла (или путь доступа), в котором мы хотим сохранить файл.

WebClient Client = new WebClient();

Client.DownloadFile('http://www.Wrox.com/default.htm', 'index.htm');

Более часто приложению приходится обрабатывать данные, полученные с web-сайта. Чтобы сделать это, используется метод OpenRead(), который возвращает ссылку типа Stream. Затем можно извлекать данные просто из потока.

WebClient Client = new WebClient();

Stream sfrm = Client.OpenRead('http://www.Wrox.com/default.htm');

Пример: базовый клиент Web

Первый пример продемонстрирует использование метода webClient.OpenRead(). В этом случае содержимое загруженных данных просто выводится в окне списка. Проект создается как стандартное приложение C# для Windows, в него добавляется окно списка с именем listBox1, в котором выводится содержимое загруженного файла. Затем в конструкторе основной формы делаются изменения:

public Form1() {

 InitializeComponent();

 System.Net.WebClient Client = new WebClient();

 Stream strm = Client.OpenRead('http://www.wrox.com');

 StreamReader sr = new StreamReader(strm);

 string line;

 do {

  line = sr.ReadLine();

  listBox1.Items.Add(line);

 }

 while (line != null) strm.Close();

}

Для упрощения URI в программе жестко закодирован.

Акроним URI (Uniform Resource Identifier) — Универсальный идентификатор ресурса — означает любую короткую строку, указывающую на некоторый ресурс. Следовательно, строка вида http://www.wrox.com является URI. В прошлом для идентификации таких адресов традиционно использовался термин URL (универсальный локатор ресурса), но термин URL больше не используется в новых технических спецификациях, теперь предпочтение отдается URI. URI имеет приблизительно такое же значение, как и URL, но более распространен, так как URI не обязательно предполагает, что используется один из известных протоколов, таких как HTTP или FTP.

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату