我正在寫一個android應用程序,需要同時發送多個POST請求和一個httpClient
。如何使用相同的客戶端發送多個請求?
在我的應用程序中,httpClient發送一個登錄請求,其會話已設置並且客戶端已登錄,我想用同一個客戶端(已登錄)下載一些圖片,並且我希望下載爲同時完成,我該怎麼做?
我正在寫一個android應用程序,需要同時發送多個POST請求和一個httpClient
。如何使用相同的客戶端發送多個請求?
在我的應用程序中,httpClient發送一個登錄請求,其會話已設置並且客戶端已登錄,我想用同一個客戶端(已登錄)下載一些圖片,並且我希望下載爲同時完成,我該怎麼做?
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);
}
對於使用相同的HttpClient執行多個請求,您可以使用
MultiThreadedHttpConnectionManager conMgr =new MultiThreadedHttpConnectionManager();
httpClient = new HttpClient(conMgr);
MultiThreadedHttpConnectionManager
允許多種方法執行一次。
但您可能需要根據自己的需要對其進行配置。
這有點奇怪的要求。爲什麼在同一個客戶端?爲什麼在同一時間?通常如果你想同時運行多個請求,你可以使用多個線程,每個線程都有自己的HttpClient。至少您需要更改所使用的客戶端連接管理器,以便它可以同時創建多個連接。 http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/index.html?org/apache/http/client/HttpClient.html –
@couling,因爲我想從服務器同時下載一些圖片,客戶端需要登錄,所以我想用一個httpclient下載所有的照片,我該如何更改客戶端連接管理器? – Navid777
Http從不保證保持相同的連接。在這裏使用相同的連接管理器可能沒有幫助。 Http服務器很少以這種方式維護會話。你有關於你試圖連接的這個服務器的更多細節嗎? –