WebRequest и WebResponse




Время на выполнение работы: 2 часа

Этапы работы:

I. Ознакомиться с теоретическими сведениями.

II. Выполнить задания, предложенные преподавателем.

III. Ответить на контрольные вопросы.

 

Необходимо повторить:

1. Регулярные выражения

2. Сохранения информации в файл

Теоретические сведения

WebRequest и WebResponse

Пространства имен System.Net предлагает нам классы WebRequest и WebResponse.

Теперь посмотрим пример как с помощью классов WebRequest и WebResponse загрузить Web-страницу, а также, как можно воспользоваться преимуществами дополнительных свойств HTTP.

WebRequest wreq = WebRequest.Create("https://soft-a.pro");
WebResponse wresp = wreq.GetResponse();
Stream stream = wresp.GetResponseStream();
StreamReader sr = new StreamReader(stream);
string L;
while ((L = sr.ReadLine())!= null)
{
listBox1.Items.Add(L);

}
sr.Close();
wresp.Close();

 

У класса WebRequest нету конструктора, и для создания объекта надо вызвать статический метод WebRequest.Create(). Класс WebRequest представляет запрос информации для отправки по определенному URI, и это передается в качестве параметра методу Create(). А класс WebResponse представляет данные из сервера. У класса WebResponse есть метод GetResponse() с помощью которого выполняется запрос к серверу и возвращает объект WebResponse, получающий возвращенные данные. А также можем получить поток, представляющий данные, но для этого надо воспользоваться методом GetResponseStream() класса WebResponse.
Классы WebRequest и WebResponse предусматривают поддержку чтения заголовочной информации. Есть классы-наследники которые представляют дополнительную информацию, которая специфична для протокола HTTP. Это классы HttpWebRequest, HttpWebResponse. Всегда можно полученный экземпляр WebRequest к типу HttpWebRequest, и после этого можно получить доступ к свойствам, специфичным для протокола HTTP. Множество свойств заголовка можно получить и посмотреть в следующем примере.

WebRequest wreq = WebRequest.Create("https://soft-a.pro");
WebResponse wresp = wreq.GetResponse();
HttpWebRequest httpwreq = (HttpWebRequest)wreq;
listBox1.Items.Add("Request Timeout (ms): " + httpwreq.Timeout);
listBox1.Items.Add("Request AllowRedirect: " + httpwreq.AllowAutoRedirect);
listBox1.Items.Add("Request KeepAlive: " + httpwreq.KeepAlive);
listBox1.Items.Add("Request URI: " + httpwreq.RequestUri);

Здесь Timeout измеряется в миллисекундах, его значение по умолчанию 100 000. Можно изменить значение этого свойства, чтобы управлять тем, насколько долго WebRequest будет ожидать ответа, если пройдет данное время объект возбудит исключение WebException. Для того чтобы узнать причину исключения необходимо всего лишь проверить значение свойства WebException.Status.
KeepAlive специфичное свойство протокола HTTP, поэтому доступ к нему можно получить через HttpWebRequest. Данное свойство позволяет множеству запросов использовать одно и то же соединение, что экономит время. По умолчанию значение этого свойства True.

Классы запросов и ответов размещают большинство важнейших заголовков в свойствах, но можно обратиться к самому свойству Headers для просмотра набора всех заголовков.


WebRequest wrq = WebRequest.Create(txtUri.Text);
WebResponse wrs = wrq.GetResponse();
WebHeaderCollection whc = wrs.Headers;
for (int i = 0; i < whc.Count; i++)
{
listBox1.Items.Add("Header " + whc.GetKey(i) + ":" + whc[i]);
}


 

Задания

Работа с файлами должна выполнять при помощи оператора using

1. Записать в файл список фильмов, которые идут сегодня в кинотеатрах Беларуси (ресурс: afisha.tut.by/film/)

2. Записать в файл список спектаклей, которые будут или идут в театрах Беларуси(ресурс: https://afisha.tut.by/theatre/) Гольдюк

3. Записать в файл заголовки новостей о ноутбуках(ресурс: https://baraholka.onliner.by/viewforum.php?f=63)

4. Записать в файл важные топики с форума(ресурс: https://forum.onliner.by/)

5. Записать в файл не важные топики с форума(ресурс: https://forum.onliner.by/)

6. Записать в файл прогноз на неделю(ресурс: https://pogoda.tut.by/?utm_source=main_page&utm_medium=main_resource_block&utm_campaign=tutby_links)

7. Записать в файл заголовки объявлений о работе программистов (ресурс: https://jobs.tut.by/search/vacancy?area=1002&text=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82&specialization=&salary=&currency_code=BYR)

8. Записать в файл информацию о наименовании обуви и цене(ресурс: https://kupi.tut.by/obuv/)

Контрольные вопросы:

1. Сетевая модель

2. Модель ISO?

3. Для чего нужен класс webResponse

4. Для чего нужен класс webRequest

5. Для чего нужна служба DNS

6. Обработка веб исключений.

7. Что такое URI?


 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-04-15 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: