我正在致力於瀏覽器/代理服務的項目,我需要下載網頁。在將自定義HTTP請求發送到Web服務器後,我開始監聽服務器響應。如何知道HTTP服務器何時完成發送數據
當讀取響應時,我檢查Content-Length:-row的響應標題。如果我得到其中的一個,那麼很容易確定服務器何時完成發送數據,因爲我總是知道我收到了多少個字節的數據。
當服務器不包含Content-Length標頭並且還將連接保持打開狀態以便進一步請求時,就會出現問題。例如,谷歌服務器響應gzip-content,但不包括內容長度。我如何知道何時停止等待更多數據並關閉連接?
我已經考慮過在一段時間內沒有收到數據的時候使用超時值來關閉連接,但是這似乎是錯誤的做法。例如,Chrome可以像我一樣下載相同的頁面,並且似乎總是知道何時關閉連接。
這似乎是正確的解決方法,如果這也適用於壓縮數據。 (我假設它是這樣做的,因爲我在一些缺少Content-Length的請求中看到了Transfer-Encoding:頭部)。謝謝! – Accatyyc 2012-02-23 12:34:22