我有一个小程序发送http请求并获得TCP协议的响应。获取没有内容长度的http请求的响应?
我的请求格式;
GET/HTTP/1.0
Host: somewebsite.com
{two new line}
我从插座(使用C#中的NetworkStream和StreamReader的),直到找到要找的内容长度报头读取响应一行一行。我存储的长度,然后继续阅读,直到找到一个空行。然后创建一个长度的缓冲区并接收其余的响应。
但有些回应没有内容长度标题。所以我的方法失败了。如果我不知道应该收到多少字节,我应该什么时候停止?
这很容易让人误解。如果响应具有内容长度标题字段并且不使用分块编码,那就是* only *信息。如果您收到的内容较少,则应将内容视为截断。如果您收到更多内容,则服务器已损坏,或者您已在查看下一个响应。 – 2012-07-07 19:53:02
我虚心地询问解释如何读取下一个响应可能发生在一个唯一的套接字上,当客户端没有完成解析当前的一个,所以它不太可能发送下一个请求。我可以更好地理解downvote。否则,我不会在这件事上看到任何重大分歧。当你读到声明的内容长度时,你会做什么,并且socket read告诉你还剩下2个字节?在现实中,说“愚蠢的破碎的服务器,我不会再和你说话”并不像很多程序员喜欢的那样频繁。 – 2012-07-08 11:22:07
vtmarvin:客户端可以使用流水线。 – 2012-07-08 19:26:52