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;
}
}
HttpClientUtil
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.