我試圖使用IO :: Socket :: INET連接到Web服務(是的,我知道有很多更好的模塊可以做到這一點,沒有它們,不能添加它們,所以請不要提示它),但是我正在等待(等待響應)。IO :: Socket獲取響應時超時
這裏是我的代碼的基本癥結(我以前填充所有適當的標題的內容,並對其進行設置等):
$httpSock->print($content);
my @lines = $httpSock->getlines();
foreach my $line (@lines) {
print $line;
}
看來,我的要求是立即進行,然後等待大約2分鐘後再吐出迴應。如果我改變代碼使用原始套接字recv
代替getlines()
,鼻翼:
$httpSock->recv($data, 1024);
我得到的立即響應(雖然只有前1024個字符)。我在這裏做錯了什麼?我使用的IO :: Socket版本足夠晚,autoflush
應該默認啓用,但明確地打開它似乎沒有任何區別。我可能也只是繼續讀取套接字,直到我得到整個響應,但這絕對比使用getlines()
或<$httpSock>
更混亂。
在此先感謝。
是的,這與我所擁有的非常接近。進一步的調查讓我相信這是一種EOF問題。如果我使用'getline()'(在一個循環中),它會抓取最後一行。如果我使用'recv()',它將獲得除最後一位以外的所有數據。這些幫助有用? – Morinar 2009-10-02 18:22:09
我也在執行POST而不是HEAD或GET。不知道這是否有什麼區別... – Morinar 2009-10-02 18:26:32
您的示例也適用於我,但是如果您將HTTP/1.0更改爲HTTP/1.1(這是我使用的),您的示例與我的一樣掛起。 HTML/1.0和HTML/1.1有什麼區別? – Morinar 2009-10-02 18:43:24