我正在从事一个关于浏览器/代理的项目,需要下载网页。在向Web服务器发送自定义HTTP请求后,我开始监听服务器响应。
读取响应时,我会检查响应头是否包含Content-Length行。如果有这样的行,那么很容易确定服务器何时完成数据发送,因为我始终知道接收到了多少字节的数据。
当服务器没有包含Content-Length头并且仍然保持连接以进行进一步请求时,问题就出现了。例如,谷歌服务器响应具有压缩内容,但不包括内容长度。那么,我如何知道何时停止等待更多数据并关闭连接?
我考虑使用超时值来在一段时间内未收到数据时关闭连接,但这似乎不是正确的方法。例如,Chrome可以像我一样下载相同的页面,并且总是知道何时准确地关闭连接。
读取响应时,我会检查响应头是否包含Content-Length行。如果有这样的行,那么很容易确定服务器何时完成数据发送,因为我始终知道接收到了多少字节的数据。
当服务器没有包含Content-Length头并且仍然保持连接以进行进一步请求时,问题就出现了。例如,谷歌服务器响应具有压缩内容,但不包括内容长度。那么,我如何知道何时停止等待更多数据并关闭连接?
我考虑使用超时值来在一段时间内未收到数据时关闭连接,但这似乎不是正确的方法。例如,Chrome可以像我一样下载相同的页面,并且总是知道何时准确地关闭连接。