Как прочитать содержимое веб-страницы, которое само по себе может быть перенаправлено на другой URL? - PullRequest
2 голосов
/ 27 мая 2011

Я использую этот код для чтения содержимого веб-страницы:

     my $ua = new LWP::UserAgent;                     
      my $response= $ua->post($url);

      if ($response->is_success){                 
      my $content = $response->content;
...

Но если $ url указывает на перемещенную страницу, то $ response-> is_success возвращает false.Теперь, как мне легко получить содержимое перенаправленной страницы?

1 Ответ

1 голос
/ 27 мая 2011

Тебе нужно погоня за самим перенаправлением.

if ($response->is_redirect()) {
    $url = $response->header('Location');
    # goto try_again
}

Возможно, вы захотите поместить это в цикл while и использовать «next» вместо «goto». Вы также можете войти в него, ограничить количество перенаправлений, которые вы хотите преследовать, и т. Д.

[обновление]

ОК. Я только что заметил, что есть более простой способ сделать это. Со справочной страницы LWP :: UserAgent:

$ua->requests_redirectable
$ua->requests_redirectable( \@requests )
    This reads or sets the object's list of request names that
    "$ua->redirect_ok(...)" will allow redirection for.  By default,
    this is "['GET', 'HEAD']", as per RFC 2616.  To change to include
    'POST', consider:

       push @{ $ua->requests_redirectable }, 'POST';

Так что да, может быть, просто сделай это. : -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...