Добавить в цитаты Настройки чтения

Страница 494 из 502

В приведенной ниже программе отображаются заголовки, связанные с сетевым ресурсом, доступным по адресу www. McGraw-Hill. com.

<b>// Проверить заголовки.</b>

<b>using System;</b>

<b>using System.Net;</b>

<b>class HeaderDemo {</b>

<b>  static void Main() {</b>

<b>    // Создать объект запроса типа WebRequest по указанному URI.</b>

<b>    HttpWebRequest req = (HttpWebRequest)</b>

<b>    WebRequest.Create(&quot;http://www.McGraw-Hill.com&quot;);</b>

<b>    // Отправить сформированный запрос и получить на него ответ.</b>

<b>    HttpWebResponse resp = (HttpWebResponse)req.GetResponse();</b>

<b>    // Получить список имен.</b>

<b>    string[] names = resp.Headers.AllKeys;</b>

<b>    // Отобразить пары &quot;имя-значение&quot; из заголовка.</b>

<b>    Console.WriteLine(&quot;{0,-20}{1}&quot;, &quot;Имя&quot;, &quot;Значение&quot;);</b>

<b>    foreach (string n in names) {</b>

<b>      Console.Write(&quot;{0,-20}&quot;, n);</b>

<b>      foreach (string v in resp.Headers.GetValues(n))</b>

<b>        Console.WriteLine(v);</b>

<b>    }</b>

<b>    // Закрыть ответный поток, resp.Close();</b>

<b>  }</b>

<b>}</b>

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

<b>Имя                 Значение</b>

<b>X-Server-Name       va-c1-r4-u27-b1</b>

<b>X-Cache             MISS from proxy.ukr.zal</b>

<b>X-Cache-Lookup      MISS from proxy.ukr.zal:3129</b>

<b>Co

<b>Content-Length      4442</b>

<b>Content-Type        text/html;charset=utf-8</b>

<b>Date                Wed, 27 Jul 2016 09:01:26 GMT</b>

<b>Last-Modified       Mon, 25 Jul 2016 11:57:20 GMT</b>

<b>Server              Apache</b>

(В оригинале приведено:)

<b>Имя                 Значение</b>

<b>Transfer-encoding   chunked</b>

<b>Content-Type        text/html</b>

<b>Date                Sun, 06 Dec 2009 20:32:06 GMT</b>

<b>Server              Sun-ONE-Web-Server/6.1</b>

Для доступа к cookie-наборам, получаемым в ответ по протоколу HTTP, служит свойство Cookies, определенное в классе HttpWebResponse. В cookie-Ha6opax содержится информация, сохраняемая браузером. Они состоят из пар "имя-значение" и упрощают некоторые виды доступа к веб-сайтам. Ниже показано, каким образом определяется свойство Cookies.

<b>public CookieCollection Cookies { get; set; }</b>

В классе CookieCollection реализуются интерфейсы ICollection и IEnumerable, и поэтому его можно использовать аналогично классу любой другой коллекции (подробнее об этом см. в главе 25). У этого класса имеется также индексатор, позволяющий получать cookie-Ha6op по указанному индексу или имени.

В коллекции типа CookieCollection хранятся объекты класса Cookie. В классе Cookie определяется несколько свойств, предоставляющих доступ к различным фрагментам информации, связанной с cookie-набором. Ниже приведены два свойства, Name и Value, используемые в примерах программ из этой главы.

<b>public string Name { get; set; }</b>

<b>public string Value { get; set; }</b>

Имя cookie-Ha6opa содержится в свойстве Name, а его значение — в свойстве Value.

Для того чтобы получить список cookie-наборов из принятого ответа, необходимо предоставить сооkiе-контейнер с запросом. И для этой цели в классе HttpWebRequest определяется свойство CookieContainer, приведенное ниже.

<b>public CookieContainer CookieContainer { get; set; }</b>

В классе CookieContainer предоставляются различные поля, свойства и методы, позволяющие хранить сооkiе-наборы. По умолчанию свойство CookieContainer содержит пустое значение. Для того чтобы воспользоваться cookie-наборами, необходимо установить это свойство равным экземпляру класса CookieContainer. Во многих приложениях свойство CookieContainer не применяется непосредственно, а вместо него из принятого ответа составляется и затем используется коллекция типа CookieCollection. Свойство CookieContainer просто обеспечивает внутренний механизм сохранения cookie-наборов.

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