我正在致力于浏览器/代理服务的项目,我需要下载网页。在将自定义HTTP请求发送到Web服务器后,我开始监听服务器响应。如何知道HTTP服务器何时完成发送数据
当读取响应时,我检查Content-Length:-row的响应标题。如果我得到其中的一个,那么很容易确定服务器何时完成发送数据,因为我总是知道我收到了多少个字节的数据。
当服务器不包含Content-Length标头并且还将连接保持打开状态以便进一步请求时,就会出现问题。例如,谷歌服务器响应gzip-content,但不包括内容长度。我如何知道何时停止等待更多数据并关闭连接?
我已经考虑过在一段时间内没有收到数据的时候使用超时值来关闭连接,但是这似乎是错误的做法。例如,Chrome可以像我一样下载相同的页面,并且似乎总是知道何时关闭连接。
这似乎是正确的解决方法,如果这也适用于压缩数据。 (我假设它是这样做的,因为我在一些缺少Content-Length的请求中看到了Transfer-Encoding:头部)。谢谢! – Accatyyc 2012-02-23 12:34:22