2013-07-27 131 views
0

我正在寫一個android應用程序,需要同時發送多個POST請求和一個httpClient如何使用相同的客戶端發送多個請求?

在我的應用程序中,httpClient發送一個登錄請求,其會話已設置並且客戶端已登錄,我想用同一個客戶端(已登錄)下載一些圖片,並且我希望下載爲同時完成,我該怎麼做?

+0

這有點奇怪的要求。爲什麼在同一個客戶端?爲什麼在同一時間?通常如果你想同時運行多個請求,你可以使用多個線程,每個線程都有自己的HttpClient。至少您需要更改所使用的客戶端連接管理器,以便它可以同時創建多個連接。 http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/index.html?org/apache/http/client/HttpClient.html –

+0

@couling,因爲我想從服務器同時下載一些圖片,客戶端需要登錄,所以我想用一個httpclient下載所有的照片,我該如何更改客戶端連接管理器? – Navid777

+0

Http從不保證保持相同的連接。在這裏使用相同的連接管理器可能沒有幫助。 Http服務器很少以這種方式維護會話。你有關於你試圖連接的這個服務器的更多細節嗎? –

回答

3
HttpClient createClient() { 
    HttpParams params = new BasicHttpParams(); 
    params.setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1); 
    params.setParameter(CoreProtocolPNames.HTTP_CONTENT_CHARSET, HTTP.DEFAULT_CONTENT_CHARSET); 
    params.setBooleanParameter(CoreProtocolPNames.USE_EXPECT_CONTINUE, true); 
    params.setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 30 * 1000); 
    params.setParameter(CoreConnectionPNames.SO_TIMEOUT, 30 * 1000); 

    SchemeRegistry schReg = new SchemeRegistry(); 
    schReg.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80)); 
    schReg.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443)); 
    ClientConnectionManager conMgr = new ThreadSafeClientConnManager(params, schReg); 

    return new DefaultHttpClient(conMgr, params); 
} 
1

對於使用相同的HttpClient執行多個請求,您可以使用

MultiThreadedHttpConnectionManager conMgr =new MultiThreadedHttpConnectionManager(); 
httpClient = new HttpClient(conMgr); 

MultiThreadedHttpConnectionManager允許多種方法執行一次。

但您可能需要根據自己的需要對其進行配置。

相關問題