0

これらの機能を備えたJavaでHTTPページを取得するための現実的な(ハングプルーフ)方法を探しています。

  • ヘッダーのcontent-typeがtext/..でない場合は、ページのフェッチを停止します。
  • ロードされたデータがバイト単位の制限を超えた場合(およびcontent-lengthが応答で設定されていない場合)、いつでもページのフェッチを停止できます。
  • 指定された制限時間にページのフェッチを停止できます

apache httpクライアントにこれらのオプションはありますか?多くの接続の後、一部の一部が完全に長時間ハングし、プロセスシグナルにも応答しないことを知っていますが、この問題は他のスレッドでページフェッチを実行することで省略でき、制限時間後に忘れることができます。しかし、私はまだ与えられた問題の解決策を見つけられませんでした。

また、私の目標は、多くの忘れられたゾンビスレッドが巨大なファイルをダウンロードするのを避けることです。そのため、ここでは不正なダウンロードを停止することが優先されます。

4

2 に答える 2

0
  1. HttpRequestExecutor.doReceiveResponse(...)コンテンツに基づいてフィルタリングを行います。

  2. org.apache.http.message.BasicLineParser#parseRequestLine(...)カーソルの最大右位置に制限を設定して上書きします。

  3. オーバーライドHttpRequestExecutor.preProcess(...)して、タイマーの有効期限を設定できます。

これらはすべてあなたの側からの努力を必要とします。

于 2012-04-26T13:35:20.367 に答える
0

httpclientまたはhttpURLConnectionの使用:

  1. response.getHeadersまたconnection.getHeaderField
  2. nバイト後に読み取りループを停止します
  3. tの後に読み取りループを停止します(チェックするだけですSystem.currentTimeMillis()
于 2012-04-26T13:30:53.863 に答える