我即将失去它在这里,我想发送两个HTTP 1.1来获取我的一些网页的源代码(我不想使用LWP),只有第一个工作,即使当我切换为了,所以从理论上讲这两项请求都很好,这里是我做的:两个HTTP 1.1请求(一个不工作)?
我甚至创造了两个插座,以防万一,但同样的结果...
my $sock = IO::Socket::INET->new(
PeerAddr => $dom,
PeerPort => 'http(80)',
Proto => 'tcp'
)
or die "Could not connect to :80!! $!";
my $sock2 = IO::Socket::INET->new(
PeerAddr => $dom,
PeerPort => 'http(80)',
Proto => 'tcp'
)
or die "Could not connect to :80!! $!";
my $req2 = << 'EOT'
POST/HTTP/1.1
Host: $dom
Connection: keep-alive
Content-Length: 57
Cache-Control: max-age=0
Origin: ${org}
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Referer: ${ref}
EOT
;
my $req = << 'EOT'
POST/HTTP/1.1
Host: $dom
Connection: keep-alive
Content-Length: 57
Cache-Control: max-age=0
Origin: ${org}
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Referer: ${ref}
EOT
;
$sock2->send($req2);
sleep 5;
my $abc;
while(<$sock2>) {
print $_;
}
$sock->send($req);
sleep 5;
while(<$sock>) {
print $_;
}
哪里似乎是问题吗?
在此先感谢。
调试提示:在发送请求之前打印出请求。你会发现你应该为你的请求使用双引号字符串,这样变量就可以插入→'<<“EOT”'。此外,我觉得你缺乏明确的'\ r \ n'结尾令人不安。生产力小窍门:严格地说,只需使用['LWP :: UserAgent'](https://metacpan.org/pod/LWP::UserAgent)代替HTTP请求的裸套接字。 LWP有什么问题? – amon
LWP说实话,没有什么不对,它只是慢了一点,因为有时我需要检查多个页面,并且使用HTTP 1.1我不必等待答案,这是我所知道的。 – Mugiwara
谁告诉你这是错的。与您的代码相反,LWP确实使用HTTP/1.1并理解HTTP/1.1响应。 –