HttpClientUtil

import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager; import org.apache.commons.httpclient.params.HttpClientParams; import org.apache.commons.httpclient.params.HttpConnectionManagerParams; public class HttpClientUtil { private HttpClientUtil() { } private static HttpClient httpClient = null; //靜態工廠方法 public static HttpClient getInstanceHttpClient() { if (httpClient == null) { MultiThreadedHttpConnectionManager connectionManager = new MultiThreadedHttpConnectionManager(); // 創建 HttpClient 的多線程實例 //在創建httpclient對象的時候,默認使用simpleHttpConnectionManager作爲連接管理,而它不適合多線程環境。故修正方法是:自己創建httpclient對象,並指定適合多線程環境的連接管理器。 // httpClient = new HttpClient(connectionManager); // /* HttpConnectionManagerParams params = new HttpConnectionManagerParams(); params.setConnectionTimeout(1000); // params.setSoTimeout(2000); // 最大連接數 params.setMaxTotalConnections(1); params.setDefaultMaxConnectionsPerHost(1); params.setStaleCheckingEnabled(true); connectionManager.setParams(params); HttpClientParams httpClientParams = new HttpClientParams(); // 設置httpClient的連接超時,對連接管理器設置的連接超時是無用的 httpClientParams.setConnectionManagerTimeout(1000); //等價於4.2.3中的CONN_MANAGER_TIMEOUT httpClient = new HttpClient(connectionManager); httpClient.setParams(httpClientParams); //另外設置http client的重試次數,默認是3次;當前是禁用掉(如果項目量不到,這個默認即可) // httpClientParams.setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler(0, false)); // */ } return httpClient; } }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章