我在C做一個簡單的http頁面請求者。它使用套接字向主機發送HTTP/1.0 GET請求,並解析答案以有效地下載html文件。 然而,當我發送的請求是這樣的:爲什麼我的HTTP/1.0 GET請求返回OK但沒有正文內容?
GET http://stackoverflow.com/questions HTTP/1.0
User-Agent: myRequester/1.0
它返回
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/html; charset=utf-8
Date: Mon, 19 Dec 2011 15:28:08 GMT
Content-Length: 54362
Connection: close
但正文內容。
是的,我已經把CRLF放在每一行的末尾和一個空行。 我通過一個連接只使用一個套接字。而且我還必須堅持使用HTTP/1.0。
您確定您確實正在閱讀完整回覆嗎?這些標頭確實表明服務器正在發送一個正文。 – ibid 2011-12-19 15:48:40
是的,我確定。我已經通過recv()返回檢查了答案長度,之後strlen()編輯了緩衝區。 – alexdantas 2011-12-19 15:49:53
但是你讀到底了嗎?請注意,recv並不一定會在一次調用中讀取完整的響應;您應該重複呼叫,直到recv報告連接已結束。 – ibid 2011-12-19 15:53:37