如何阅读本身可能被重定向到另一个网址的网页内容?

时间:2011-05-27 18:02:45

标签: perl

我正在使用此代码来阅读网页内容:

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

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

但如果$ url指向已移动的页面,则$ response-> is_success将返回false。现在如何轻松获取重定向页面的内容?

1 个答案:

答案 0 :(得分:1)

你需要追逐重定向。

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';

所以是的,也许只是这样做。 : - )