httpclient4.5以上設定連線超時的…
阿新 • • 發佈:2019-01-01
public static JSONObject httpGet(String url, Map getrequesttMap, boolean noNeedResponse) {
//post請求返回結果
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet method =new HttpGet(url);
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(5000).setConnectionRequestTimeout(
.setSocketTimeout(5000).build();
//setConnectTimeout:設定連線超時時間,單位毫秒。
//setConnectionRequestTimeout:設定從connect Manager獲取Connection 超時時間,單位毫秒。這個屬性是新加的屬性,因為目前版本是可以共享連線池的。
//setSocketTimeout:請求獲取資料的超時時間,單位毫秒。 如果訪問一個介面,多少時間內無法返回資料,就直接放棄此次呼叫。
method.setConfig(requestConfig);
try
{
if
(null
!= getrequesttMap) {
//解決中文亂碼問題
for (String key : getrequesttMap.keySet()) {
params.add(new BasicNameValuePair(key, getrequesttMap.get(key)));
}
method.setParams((HttpParams) new UrlEncodedFormEntity(params, "UTF-8"));
//method.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
}
HttpResponse result = httpClient.execute(method);
url = URLDecoder.decode(url, "UTF-8");
return buildResult(url, result, noNeedResponse);
} catch (IOException e) {
logger.error("通訊異常:" + url, e);
}
return null;
}