为什么我的HTTP / 1.0 GET请求返回OK但没有正文内容?

时间:2011-12-19 15:45:37

标签: http sockets

我在C中制作一个简单的http页面请求者。它使用套接字向主机发送HTTP / 1.0 GET请求,并解析答案以有效下载html文件。 但是,当我发送这样的请求时:

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。

1 个答案:

答案 0 :(得分:3)

最可能的解释是服务器实际上正在发送一个正文,但你并没有阅读全部内容。大多数网络系统不一定在一个函数调用中返回所有响应,因为他们认为立即返回什么数据是有用的,即使预期会有更多。

连接结束时,Unix系统调用recv返回零。你应该继续调用它,直到你得到零或错误。