求解:我通過安裝HTML :: HeadParser來解決它。 但我仍然不知道爲什麼它突然停止工作。沒有來自LWP請求的內容
我注意到一些曾經工作過的LWP請求已經停止工作,所以我做了一個小腳本來檢查原因。 出於某種原因,我沒有得到任何回報,因爲大多數網站的內容(迄今爲止唯一的兩個工作是icanhazip.com和gdata.youtube.com api)。 我收到狀態200,併爲標題獲取正確的Content-Lenght。 我試着在curl和wget中都沒有問題地抓取頁面。如果我使用tcpdump檢查請求,我確實會收到所有正確信息的回覆。 我已經用LWP :: UserAgent和LWP :: Simple嘗試了相同的結果。
#!/usr/bin/perl
use warnings;
use strict;
use LWP::UserAgent;
my $agent = LWP::UserAgent->new;
$agent->agent("Mozilla/5.0");
my $req = HTTP::Request->new(GET => 'http://stackoverflow.com');
my $res = $agent->request($req);
print $res->status_line, "\n";
print $res->header("Content-Length"), "\n";
print $res->content, "\n";
傾銷與DumpLex $ RES給出如下:
$HTTP_Response1 = bless({
_content => '',
_headers => bless({
"cache-control"
=> 'public, max-age=15',
"client-aborted"
=> 'die',
"client-date"
=> 'Sat, 23 Jun 2012 15:07:23 GMT',
"client-peer"
=> '64.34.119.12:80',
"client-response-num"
=> 1,
connection => 'close',
"content-length"
=> 211684,
"content-type"
=> 'text/html; charset=utf-8',
date => 'Sat, 23 Jun 2012 15:07:22 ',
expires => 'Sat, 23 Jun 2012 15:07:38 ',
"last-modified"
=> 'Sat, 23 Jun 2012 15:06:38 GMT ',
vary => '*',
"x-died" => 'Can\'t locate HTML/HeadParser.pm in @INC (@INC contains: /usr/lib/perl5/site_perl /usr/share/perl5/site_perl /usr/lib/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib/perl5/core_perl /usr/share/perl5/core_perl .) at /usr/share/perl5/site_perl/LWP/UserAgent.pm line 663.'
}, 'HTTP::Headers'),
_msg => 'OK',
_protocol
=> 'HTTP/1.1',
_rc => 200,
_request => bless({
_content => '',
_headers => bless({
"content-type" => 'application/html',
"user-agent" => 'Mozilla/5.0'
}, 'HTTP::Headers'),
_method => 'GET',
_uri => \do { my $v = 'http://stackoverflow.com/' },
_uri_canonical
=> 'V: $HTTP_Response1->{_request}{_uri}'
}, 'HTTP::Request'),
default_add_content
=> 1
}, 'HTTP::Response');
$HTTP_Response1->{_request}{_uri_canonical} = $HTTP_Response1->{_request}{_uri};
bless($HTTP_Response1->{_request}{_uri}, 'URI::http');
你說哪些網站有效,但哪些網站沒有。你如何確定你「不會收到任何內容」?轉儲錯誤的響應對象:'使用Data :: Dump :: Streamer; DumpLex $ res;' – daxim