0

JavaでHttpClientを使用して複数のスレッドでURLのコンテンツを取得する正しい方法は何ですか?

たとえば、アイテムを含むリストをロードし、各アイテムを異なるスレッドに同時にロードし、異なるパラメータを使用して同じURLから情報を取得します。

私が作成しているアプリケーションでは、異なるスレッドで同じURLからXMLを読み取るときに、要素が見つからないという例外が発生しません。

4

4 に答える 4

3

受け入れられた回答はHttpClient3.xのみの解決策であり、現在のバージョンは4.1(これはAndroidにも含まれています)であるため、動作する4.xの例を共有したいと思います。多分それは誰かの喧噪を救うでしょう。

SchemeRegistry schemeRegistry = new SchemeRegistry();
schemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
schemeRegistry.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443));

HttpParams parameters = new BasicHttpParams();
ClientConnectionManager connectionManager = new ThreadSafeClientConnManager(parameters, schemeRegistry);
HttpClient httpClient = new DefaultHttpClient(connectionManager, parameters);
于 2010-08-19T14:19:01.040 に答える
1

HttpClient3.0を使用していると思います。これを試して、

  HttpClient client = new HttpClient(new MultiThreadedHttpConnectionManager());
于 2009-09-25T13:58:04.573 に答える
1

ThreadSafeClientConnManager4.2でも説明されています。使用する代わりにorg.apache.http.impl.conn.PoolingHttpClientConnectionManager

于 2014-12-11T10:14:29.513 に答える
0

データをアプリケーションスコープに配置すると、どのスレッドからでも利用できるようになります。データが機密である場合はこれを使用しないでください。削除しないとサーバーの存続期間中に存在するため、データを使い終わったら明示的に削除することを忘れないでください。

于 2009-09-25T14:01:17.187 に答える