我即將失去它在這裏,我想發送兩個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響應。 –