2009-09-25 66 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

相關問題