由于项目需要,昨天研究了下httpclient。发现4.5版本与4.2.1版本有些区别了。比如,4.2.1版本的使用的是DefaultHttpClient对象,关闭httpclient使用的是
httpClient.getConnectionManager().shutdown();而4.5版本中使用的是CloseableHttpClient对象,从名字就可以知道,关闭此对象使用的是close();方法。
get请求传参数,是直接在url后面拼接上去的如:
str = EntityUtils.toString(new UrlEncodedFormEntity(params,"utf-8"));
httpget.setURI(new URI(httpget.getURI().toString() + "?" + str));
post请求传参数是按照以下形式:
UrlEncodedFormEntity formentity = new UrlEncodedFormEntity(params, Consts.UTF_8);
httppost.setEntity(formentity);
设置超时时间时需要RequestConfig配置类
RequestConfig requestConfig = RequestConfig.custom()
.setSocketTimeout(60*1000)
.setConnectTimeout(60*1000)
.build();
httppost.setConfig(requestConfig);
连接池的配置如下:
PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
// Increase max total connection to 200
cm.setMaxTotal(200);
// Increase default max connection per route to 20
cm.setDefaultMaxPerRoute(20);
// HttpHost localhost = new HttpHost("locahost", 80);
// cm.setMaxPerRoute(new HttpRoute(localhost), 50);
httpClient = HttpClients.custom()
.build();