0

在java中使用HttpClient在多个线程中获取URL内容的正确方法是什么?

例如加载带有项目的列表,同时在不同的线程中加载每个项目,并从具有不同参数的相同 URL 获取信息。

在我正在创建的应用程序中,当从不同线程中的相同 URL 读取 XML 时,它没有发现元素异常。

4

4 回答 4

3

因为接受的答案只描述了 HttpClient 3.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

ThreadSafeClientConnManager在 4.2 中也被贬低了。而不是使用org.apache.http.impl.conn.PoolingHttpClientConnectionManager

于 2014-12-11T10:14:29.513 回答
1

我假设您使用 HttpClient 3.0。尝试这个,

  HttpClient client = new HttpClient(new MultiThreadedHttpConnectionManager());
于 2009-09-25T13:58:04.573 回答
0

如果您将数据放入应用程序范围,它应该可以从任何线程获得。如果数据是敏感的,则不应使用它,并记住在完成后显式删除它,因为如果不删除它,它会在服务器的整个生命周期中存在。

于 2009-09-25T14:01:17.187 回答