2009-09-25 70 views
0

在java中使用HttpClient获取多线程中URL的内容的正确方法是什么?使用HttpClient连接到不同线程中的相同URL

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

在我创造它的应用使我没有发现元素异常在不同的线程从同一个URL读取XML时..

回答

1

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

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

因此,在每个线程中创建一个新的客户端?或为多个线程创建1个客户端? – Thys 2009-09-25 14:01:36

+1

所有主题的一个客户端。 – 2009-09-25 15:01:51

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

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

相关问题