3

HttpURLConnection から InputStream を開こうとすると、一部のサーバーからランダムに予期しない結果が得られます。これらのサーバーは接続を受け入れ、ソケットを開いたままにするがデータをストリームに送り返すことを許可しない「stay-alive」ヘッダーで応答するようです。

そのシナリオは、マルチスレッドクローラーの試みを少し「複雑」にします。接続がスタックすると、それを実行しているスレッドが返されないためです...一部のスレッドがまだ働いている。

接続応答ヘッダーを読み取って、その「生きている」答えを特定し、ストリームを開こうとするのを避ける方法はありますか??

4

2 に答える 2

1

「接続タイムアウト」に加えて「読み取りタイムアウト」を設定してみましたか?

http://java.sun.com/j2se/1.5.0/docs/api/java/net/URLConnection.html#setReadTimeout%28int%29を参照してください

于 2009-03-11T15:15:09.993 に答える
1

ここで何が欠けているのかわかりませんが、単にgetHeaderField()が必要なようです。

于 2009-03-12T14:28:14.297 に答える