C# 4.0 полное руководство - 2011
Шрифт:
Применение свойства LastModified
#Иногда требуется знать, когда именно сетевой ресурс был обновлен в последний раз. Это нетрудно сделать, пользуясь сетевыми средствами класса HttpWebResponse, среди которых определено свойство LastModified, приведенное ниже.
public DateTime LastModified { get; }
С помощью свойства LastModified получается
В приведенном ниже примере программы отображаются дата и время, когда был в последний раз обновлен ресурс, указываемый по URI в командной строке.
/* Использовать свойство LastModified.
Для того чтобы проверить дату последнего обновления веб-сайта, введите его URI в командной строке. Так, если назвать эту программу LastModifiedDemo, то для проверки даты последней модификации веб-сайта по адресу www.HerbSchildt.com введите команду
LastModif iedDemo http: //HerbSchildt. com
*/
using System; using System.Net;
static void Main(string[] args) {
if(args.Length != 1) {
Console.WriteLine("Применение: LastModifiedDemo <uri>"); return;
}
HttpWebRequest req = (HttpWebRequest)
WebRequest.Create(args[0]) ;
HttpWebResponse resp = (HttpWebResponse) req.GetResponse;
Console.WriteLine("Последняя модификация: " + resp.LastModified);
resp.Close ;
}
}
Практический пример создания программы MiniCrawler
Для того чтобы показать, насколько просто программировать для Интернета средствами классов WebRequest и WebReponse, обратимся к разработке скелетного варианта поискового робота под названием MiniCrawler. Поисковый робот представляет собой программу последовательного перехода от одной ссылки на сетевой ресурс к другой. Поисковые роботы применяются в поисковых механизмах для каталогизации содержимого. Разумеется, поисковый робот MiniCrawler не обладает такими развитыми возможностями, как те, что применяются в поисковых механизмах. Эта программа начинается с ввода пользователем конкретного адреса URI, по которому затем читается содержимое и осуществляется поиск
Программе MiniCrawler присущ ряд ограничений. Во-первых, в ней обнаруживаются только абсолютные ссылки, указываемые по гипертекстовой команде href="#"href=\"http", startloc,
StringComparison.OrdinallgnoreCase);
if(i != -1) {
start = htmlstr. IndexOf (1111, i) + 1; end = htmlstr. IndexOf (1111, start); uri = htmlstr.Substring(start, end-start); startloc = end;
}
return uri;
}
static void Main(string[] args) { string link = null; string str; string answer;
int curloc; // содержит текущее положение в ответе if(args.Length != 1) {
Console.WriteLine ("Применение: MiniCrawler <uri>"); return ;
}
string uristr = args[0]; // содержит текущий URI HttpWebResponse resp = null; try { do {
Console .WriteLine ("Переход по ссылке 11 + uristr);
// Создать объект запроса типа WebRequest по указанному URI. HttpWebRequest req = (HttpWebRequest)
WebRequest.Create(uristr);
uristr = null; // запретить дальнейшее использование этого URI
// Отправить сформированный запрос и получить на него ответ, resp = (HttpWebResponse) req.GetResponse;
Stream istrm = resp.GetResponseStream ;
// Заключить поток ввода в оболочку класса StreamReader. StreamReader rdr = new StreamReader(istrm) ;
// Прочитать всю страницу, str = rdr.ReadToEndO ;
curloc = 0;
do {
// Найти следующий URI для перехода по ссылке, link = FindLink(str, ref curloc);
if(link != null) {
Console.WriteLine("Найдена ссылка: " + link);
Console.Write("Перейти по ссылке, Искать дальше, Выйти?"); answer = Console.ReadLine;