使用HttpClient连接到不同线程中的相同URL

时间:2009-09-25 13:54:19

标签: java multithreading httpclient

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

例如,使用项目加载List,同时加载不同线程中的每个项目,并使用不同参数从相同的URL获取信息。

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

4 个答案:

答案 0 :(得分: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);

答案 1 :(得分:1)

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

  HttpClient client = new HttpClient(new MultiThreadedHttpConnectionManager());

答案 2 :(得分:1)

ThreadSafeClientConnManager也在4.2中弃用。而不是使用org.apache.http.impl.conn.PoolingHttpClientConnectionManager

答案 3 :(得分:0)

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