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

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

public CookieContainer CookieContainer { get; set; }

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

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

/* Пример проверки cookie-наборов.

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

Так, если назвать эту программу CookieDemo, то по команде

CookieDemo http://msn.com

отобразятся cookie-наборы с веб-сайта по адресу www.msn.com. */

using System;

using System.Net;

class CookieDemo {

  static void Main(string[] args) {

    if (args.Length != 1) {

      Console.WriteLine("Применение: CookieDemo <uri>");

      return;

    }

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

    HttpWebRequest req = (HttpWebRequest)

              WebRequest.Create(args[0]);

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

    req.CookieContainer = new CookieContainer();

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

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

    // Отобразить cookie-наборы.

    Console.WriteLine("Количество cookie-наборов: " +

            resp.Cookies.Count);

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

    for (int i = 0; i < resp.Cookies.Count; i++)

      Console.WriteLine("{0, -20}{1}",

                         resp.Cookies[i].Name,

                         resp.Cookies[i].Value);

    // Закрыть ответный поток,

    resp.Close();

  }

}

Применение свойства LastModified

Иногда требуется знать, когда именно сетевой ресурс был обновлен в последний раз. Это нетрудно сделать, пользуясь сетевыми средствами класса HttpWebResponse, среди которых определено свойство LastModified, приведенное ниже.

public DateTime LastModified { get; }

С помощью свойства LastModified получается время обновления содержимого сетевого ресурса в последний раз.

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

/* Использовать свойство LastModified.

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