10

SimpleHttpConnectionManagerが正しく使用されていません。HttpMethod.releaseConnection()が常に呼び出され、一度に1つのスレッドやメソッドのみがこの接続マネージャーを使用していることを確認してください。

このエラーが表示され、ダウンロードしたいファイルが失敗して再試行したり、未完了のダウンロードが発生したりする理由を誰かが知っていますか?

ありがとうございました !

4

2 に答える 2

16

SimpleHttpConnectionManagerを使用して、複数のスレッドからの接続を作成および使用しないようにしてください。単純な接続マネージャーはそのために設計されていません-それは常に同じ接続を返します、そしてこれはスレッドセーフではありません。

マルチスレッド環境では、接続のプールを使用する別のマネージャーを使用します。MultiThreadedHttpConnectionManagerを参照してください。

于 2010-06-21T22:31:09.777 に答える
10

これを信用しないことをお勧めしますが、Eyal Schneiderの回答によると、VincentdeVillersの優れたブログでMultiThreadedHttpConnectionManagerの使用に関する詳細情報を見つけてください。

リンクが消えた場合に備えてコピーされたコードスニペット:

HttpClient httpclient = new HttpClient(new MultiThreadedHttpConnectionManager());
GetMethod httpget = new GetMethod("http://www.myhost.com/");
try {
    httpclient.executeMethod(httpget);
    Reader reader = new InputStreamReader(
        httpget.getResponseBodyAsStream(), httpget.getResponseCharSet());
    // consume the response entity
} finally {
    httpget.releaseConnection();
}
于 2014-11-13T17:06:35.343 に答える