java http连接池实现_java实现HTTP请求(三)

importjava.io.IOException;importjava.io.UnsupportedEncodingException;importjava.util.ArrayList;importjava.util.Iterator;importjava.util.List;importjava.util.Map;importjava.util.Map.Entry;importjava.util.Set;importorg.apache.http.HttpEntity;importorg.apache.http.NameValuePair;importorg.apache.http.client.ClientProtocolException;importorg.apache.http.client.config.RequestConfig;importorg.apache.http.client.entity.UrlEncodedFormEntity;importorg.apache.http.client.methods.CloseableHttpResponse;importorg.apache.http.client.methods.HttpGet;importorg.apache.http.client.methods.HttpPost;importorg.apache.http.impl.client.CloseableHttpClient;importorg.apache.http.impl.client.HttpClients;importorg.apache.http.message.BasicNameValuePair;importorg.apache.http.util.EntityUtils;importorg.springframework.util.StringUtils;public classHttpClient4 {/*** doGet Get请求

*@paramurl

*@return

*/

public staticString doGet(String url) {

CloseableHttpClient httpClient= null;

CloseableHttpResponse response= null;

String result= "";try{

httpClient= HttpClients.createDefault();//通过址默认配置创建一个httpClient实例

HttpGet httpGet = new HttpGet(url);//创建httpGet远程连接实例

httpGet.setHeader("Authorization", "Bearer da3efcbf-0845-4fe3-8aba-ee040be542c0");//设置请求头信息,鉴权

RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(35000)//连接主机服务超时时间

.setConnectionRequestTimeout(35000)//请求超时时间

.setSocketTimeout(60000)//数据读取超时时间

.build();

httpGet.setConfig(requestConfig);//为httpGet实例设置配置

response = httpClient.execute(httpGet);//执行get请求得到返回对象

HttpEntity entity = response.getEntity();//通过返回对象获取返回数据//通过EntityUtils中的toString方法将结果转换为字符串

result =EntityUtils.toString(entity);

}catch(ClientProtocolException e) {

e.printStackTrace();

}catch(IOException e) {

e.printStackTrace();

}finally{if (null !=response) {try{

response.close();

}catch(IOException e) {

e.printStackTrace();

}

}if (null !=httpClient) {try{

httpClient.close();

}catch(IOException e) {

e.printStackTrace();

}

}

}returnresult;

}/*** post 请求

*@paramurl 请求地址

*@paramparamMap 请求参数

*@paramcontentType 请求头

*@return

*/

public static String doPost(String url, MapparamMap,String contentType) {

CloseableHttpClient httpClient= null;

CloseableHttpResponse httpResponse= null;

String result= "";

httpClient= HttpClients.createDefault();//创建httpClient实例

HttpPost httpPost = new HttpPost(url);//创建httpPost远程连接实例//配置请求参数实例

RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(35000)//设置连接主机服务超时时间

.setConnectionRequestTimeout(35000)//设置连接请求超时时间

.setSocketTimeout(60000)//设置读取数据连接超时时间

.build();

httpPost.setConfig(requestConfig);//为httpPost实例设置配置

if(StringUtils.isEmpty(contentType)){//设置请求头

httpPost.addHeader("Content-Type", "application/x-www-form-urlencoded");

}else{

httpPost.addHeader("Content-Type", contentType);

}//封装post请求参数

if (null != paramMap && paramMap.size() > 0) {

List nvps = new ArrayList();

Set> entrySet = paramMap.entrySet();//通过map集成entrySet方法获取entity

Iterator> iterator = entrySet.iterator();//循环遍历,获取迭代器

while(iterator.hasNext()) {

Entry mapEntry =iterator.next();

nvps.add(newBasicNameValuePair(mapEntry.getKey(), mapEntry.getValue().toString()));

}//为httpPost设置封装好的请求参数

try{

httpPost.setEntity(new UrlEncodedFormEntity(nvps, "UTF-8"));

}catch(UnsupportedEncodingException e) {

e.printStackTrace();

}

}try{

httpResponse= httpClient.execute(httpPost);//httpClient对象执行post请求,并返回响应参数对象

HttpEntity entity = httpResponse.getEntity();//从响应对象中获取响应内容

result =EntityUtils.toString(entity);

}catch(ClientProtocolException e) {

e.printStackTrace();

}catch(IOException e) {

e.printStackTrace();

}finally{if (null !=httpResponse) {try{

httpResponse.close();

}catch(IOException e) {

e.printStackTrace();

}

}if (null !=httpClient) {try{

httpClient.close();

}catch(IOException e) {

e.printStackTrace();

}

}

}returnresult;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值