Читать «C# 4.0: полное руководство» онлайн - страница 661

Герберт Шилдт

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

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

using System;

using System.Net;

class HeaderDemo {

  static void Main() {

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

    HttpWebRequest req = (HttpWebRequest)

    WebRequest.Create("http://www.McGraw-Hill.com");

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

    HttpWebResponse resp = (HttpWebResponse)req.GetResponse();

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

    string[] names = resp.Headers.AllKeys;

    // Отобразить пары "имя-значение" из заголовка.

    Console.WriteLine("{0,-20}{1}", "Имя", "Значение");

    foreach (string n in names) {

      Console.Write("{0,-20}", n);

      foreach (string v in resp.Headers.GetValues(n))

        Console.WriteLine(v);

    }

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

  }

}

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

Имя                 Значение

X-Server-Name       va-c1-r4-u27-b1

X-Cache             MISS from proxy.ukr.zal

X-Cache-Lookup      MISS from proxy.ukr.zal:3129

Connection          keep-alive

Content-Length      4442

Content-Type        text/html;charset=utf-8

Date                Wed, 27 Jul 2016 09:01:26 GMT

Last-Modified       Mon, 25 Jul 2016 11:57:20 GMT

Server              Apache

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

Имя                 Значение

Transfer-encoding   chunked

Content-Type        text/html

Date                Sun, 06 Dec 2009 20:32:06 GMT

Server              Sun-ONE-Web-Server/6.1

Доступ к cookie-наборам

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

public CookieCollection Cookies { get; set; }

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

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

public string Name { get; set; }

public string Value { get; set; }

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

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