私はブラウザ/プロキシ指向プロジェクトでWebページをダウンロードする必要があります。カスタムHTTPリクエストをWebサーバーに送信した後、私はサーバー応答のリスニングを開始します。HTTPサーバーがデータ送信を完了したときを知る方法
レスポンスを読むとき、レスポンスヘッダーでContent-Length:-rowを調べます。そのうちの1つを取得した場合、受信したデータのバイト数がわかっているので、サーバーがいつデータを送信したかを判断するのは簡単です。
この問題は、サーバーにContent-Lengthヘッダーが含まれておらず、以降の要求に対して接続を開いたままにしている場合に発生します。たとえば、Googleサーバーはgzipped-contentで応答しますが、コンテンツの長さは含みません。どのデータを待つのを止めて接続を閉じるのかを知るにはどうすればよいですか?
しばらくの間データが受信されていないときにタイムアウト値を使用して接続を閉じることを検討しましたが、これは間違った方法です。たとえば、Chromeは私と同じページをダウンロードでき、いつ接続をいつ閉じるかを正確に知っているようです。
これは圧縮データにも当てはまる場合、これを解決する正しい方法と思われます。 (Content-Lengthが不足している私の要求のうち、Transfer-Encoding:ヘッダーを見たことがあると思います)。ありがとう! – Accatyyc