После получения объекта HTTP::Response повторно вызывается метод previous () для выборки информации обо всех промежуточных ответах. В начало растущего списка URL добавляется URL и строка состояния каждого запроса, в результате чего формируется цепочка ответов. В конце сценария корректируется формат цепочки ответов, и эта цепочка выводится на устройство вывода.
Сценарий fbllow_chain.pl отслеживает запросы на перенаправление
#!/usr/local/bin/perl -w # Файл: follow_chain.pl use strict; use LWP; my $url= shift; my $agent = LWP::UserAgent->new; my $request = HTTP::Request->new(HEAD => $url); my $response = $agent->request($request); $response->is_success or die "$url: ", $response->message,"n"; my @urls; for (my $r = $response; defined $r; $r = $r->previous) { unshift @urls, $r->request->uri . $r->status__line } print "Response chain: nt", join ("nt--> ", @urls) , "n" ;
LWP::UserAgent.
Класс LWP::UserAgent обеспечивает передачу объектов HTTP::Request на удаленные серверы и создание объектов HTTP::Response, соответствующих полученным ответам. Этот класс, по сути дела, представляет собой машину Web-броузера.
Модуль LWP: :UserAgent обладает способностью не только выполнять выборку удаленных документов, но и зеркально отображать их на локальном компьютере так, чтобы удаленный документ передавался только в том случае, если он датирован более поздним числом по сравнению с локальной копией. Этот модуль позволяет работать с Web-страницами, например, сайта продающего телефоны donod , которые требуют проверки подлинности пользователя по паролю. Кроме того, он сохраняет и возвращает файлы cookie HTTP, а также обладает способностью устанавливать сеанс связи с рrоху серверами HTTP и перенаправлять ответы.
В отличие от модулей HTTP::Response и HTTP::Request, на основе модуля LWP::UserAgent часто создаются подклассы для уточнения способа его взаимодействия с удаленным сервером. Примеры этого будут приведены в одном из следующих разделов.