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

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

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

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

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

<b>CookieDemo http://msn.com</b>

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

<b>using System;</b>

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

<b>class CookieDemo {</b>

<b>  static void Main(string[] args) {</b>

<b>    if (args.Length != 1) {</b>

<b>      Console.WriteLine(&quot;Применение: CookieDemo &lt;uri&gt;&quot;);</b>

<b>      return;</b>

<b>    }</b>

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

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

<b>              WebRequest.Create(args[0]);</b>

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

<b>    req.CookieContainer = new CookieContainer();</b>

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

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

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

<b>    Console.WriteLine(&quot;Количество cookie-наборов: &quot; +</b>

<b>            resp.Cookies.Count);</b>

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

<b>    for (int i = 0; i &lt; resp.Cookies.Count; i++)</b>

<b>      Console.WriteLine(&quot;{0, -20}{1}&quot;,</b>

<b>                         resp.Cookies[i].Name,</b>

<b>                         resp.Cookies[i].Value);</b>

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

<b>    resp.Close();</b>

<b>  }</b>

<b>}</b>

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

<b>public DateTime LastModified { get; }</b>

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

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

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

<b>Для того чтобы проверить дату последнего обновления веб-сайта, введите его URI в командной строке. Так, если назвать эту программу LastModifiedDemo, то для проверки даты последней модификации веб-сайта по адресу </b><a href="http://www.herbschildt.com/"><b>www.HerbSchildt.com</b></a><b> введите команду</b>

<b>LastModif iedDemo http: //HerbSchildt. com</b>

<b>*/</b>

<b>using System;</b>

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

<b>class LastModifiedDemo {</b>

<b>  static void Main(string[] args) {</b>

<b>    if (args.Length != 1) {</b>

<b>      Console.WriteLine(&quot;Применение: LastModifiedDemo &lt;uri&gt;&quot;); return;</b>

<b>    }</b>

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

<b>    WebRequest.Create(args[0]);</b>

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

<b>    Console.WriteLine(&quot;Последняя модификация: &quot; + resp.LastModified);</b>

<b>    resp.Close();</b>

<b>  }</b>

<b>}</b>

Практический пример создания программы MiniCrawler

Для того чтобы показать, насколько просто программировать для Интернета средствами классов WebRequest и WebReponse, обратимся к разработке скелетного варианта поискового робота под названием MiniCrawler. Поисковый робот представляет собой программу последовательного перехода от одной ссылки на сетевой ресурс к другой. Поисковые роботы применяются в поисковых механизмах для каталогизации содержимого. Разумеется, поисковый робот MiniCrawler не обладает такими развитыми возможностями, как те, что применяются в поисковых механизмах. Эта программа начинается с ввода пользователем конкретного адреса URI, по которому затем читается содержимое и осуществляется поиск в нем ссылки. Если ссылка найдена, то программа запрашивает пользователя, желает ли он перейти по этой ссылке к обнаруженному сетевому ресурсу, найти другую ссылку на имеющейся странице или выйти из программы. Несмотря на всю простоту такого алгоритма поиска сетевых ресурсов, он служит интересным и наглядным примером доступа к Интернету средствами С#.