LWP发送帖子请求并仅在回复中获取标题

时间:2012-12-03 13:56:28

标签: perl lwp

我有这样的代码

my $ua = new LWP::UserAgent;
$ua->timeout($timeout);
$ua->agent($useragent);
$response = $ua->post($domain,['login_name'=>$login,'login_password'=> $password])->as_string;

页面内容如此之大,我无法接收它。如何只获取发送帖子数据的标题?

2 个答案:

答案 0 :(得分:1)

我认为这应该适合你。

my $ua = LWP::UserAgent->new();
$ua->timeout($timeout);
$ua->agent($useragent);
my $response = $ua->post( 
    $domain,
    [ 'login_name' => $login, 'login_password' => $password ] 
);

use Data::Dumper;

print Dumper( $response->headers() );
print $response->request()->content(), "\n";

答案 1 :(得分:1)

首先,检查您是否可以通过HEAD(在网址:login_name中)传递此login_passworddomain/?login_name=...&login_password=...。如果这不起作用,那你的情况很糟糕。

您不能将POST与HEAD的行为一起使用。 LWP将等待全面回复。

使用POST,服务器无论如何都会向您发送内容,但您可以自行避免使用套接字tcp接收所有内容: gethostbyname 连接 sysread < / strong>直到你获得/\r?\n\r?\n/并在此之后关闭套接字。无论如何都会使用一些流量,但您可以节省内存并节省时间。

使用套接字执行此操作并不正常,但有时当您拥有高负载/大数据时 - 没有比这种混乱更好的方法了。