废话不多说,直接上代码
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import com.pingan.qhcs.map.audit.constant.CodeConstant;
import com.pingan.qhcs.map.audit.exception.MapException;
public class HttpClientUtil {
protected static Log logger = LogFactory.getLog(HttpClientUtil.class);
private static PoolingHttpClientConnectionManager cm;
private static String EMPTY_STR = "";
private static String UTF_8 = "UTF-8";
private static void init() {
if (cm == null) {
cm = new PoolingHttpClientConnectionManager();
cm.setMaxTotal(50);// 整个连接池最大连接数
cm.setDefaultMaxPerRoute(5);// 每路由最大连接数,默认值是2
}
}
/**
* 通过连接池获取HttpClient
*
* @return
*/
public static CloseableHttpClient getHttpClient() {
init();
return HttpClients.custom().setConnectionManager(cm).build();
}
public static String httpGetRequest(String url) {
HttpGet httpGet = new HttpGet(url);
return getResult(httpGet);
}
public static String httpGetRequest(String url, Map<String, Object> params) throws URISyntaxException {
URIBuilder ub = new URIBuilder();
ub.setPath(url);
ArrayList<NameValuePair> pairs = covertParams2NVPS(params);
ub.setParameters(pairs);
HttpGet httpGet = new HttpGet(ub.build());
return getResult(httpGet);
}
public static String httpGetRequest(String url, Map<String, Object> headers, Map<String, Object> params)
throws URISyntaxException {
URIBuilder ub = new URIBuilder();
ub.setPath(url);
ArrayList<NameValuePair> pairs = covertParams2NVPS(params);
ub.setParameters(pairs);
HttpGet httpGet = new HttpGet(ub.build());
for (Map.Entry<String, Object> param : headers.entrySet()) {
httpGet.addHeader(param.getKey(), String.valueOf(param.getValue()));
}
return getResult(httpGet);
}
public static String httpPostRequest(String url) {
HttpPost httpPost = new HttpPost(url);
return getResult(httpPost);
}
public static String httpPostRequest(String url, Map<String, Object> params) throws UnsupportedEncodingException {
HttpPost httpPost = new HttpPost(url);
ArrayList<NameValuePair> pairs = covertParams2NVPS(params);
httpPost.setEntity(new UrlEncodedFormEntity(pairs, UTF_8));
return getResult(httpPost);
}
public static String httpPostRequest(String url, Map<String, Object> headers, Map<String, Object> params)
throws UnsupportedEncodingException {
HttpPost httpPost = new HttpPost(url);
for (Map.Entry<String, Object> param : headers.entrySet()) {
httpPost.addHeader(param.getKey(), String.valueOf(param.getValue()));
}
ArrayList<NameValuePair> pairs = covertParams2NVPS(params);
httpPost.setEntity(new UrlEncodedFormEntity(pairs, UTF_8));
return getResult(httpPost);
}
public static String httpPostRequest(String url, Map<String, Object> headers, String strBody)
throws Exception {
HttpPost httpPost = new HttpPost(url);
for (Map.Entry<String, Object> param : headers.entrySet()) {
httpPost.addHeader(param.getKey(), String.valueOf(param.getValue()));
}
httpPost.setEntity(new StringEntity(strBody, UTF_8));
return getResult(httpPost);
}
private static ArrayList<NameValuePair> covertParams2NVPS(Map<String, Object> params) {
ArrayList<NameValuePair> pairs = new ArrayList<NameValuePair>();
for (Map.Entry<String, Object> param : params.entrySet()) {
pairs.add(new BasicNameValuePair(param.getKey(), String.valueOf(param.getValue())));
}
return pairs;
}
/**
* 处理Http请求
*
* setConnectTimeout:设置连接超时时间,单位毫秒。
* setConnectionRequestTimeout:设置从connect Manager获取Connection 超时时间,单位毫秒。这个属性是新加的属性,因为目前版本是可以共享连接池的。
* setSocketTimeout:请求获取数据的超时时间,单位毫秒。 如果访问一个接口,多少时间内无法返回数据,就直接放弃此次调用。
*
* @param request
* @return
*/
private static String getResult(HttpRequestBase request) {
RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(60000)
.setConnectionRequestTimeout(5000).setSocketTimeout(60000).build();
request.setConfig(requestConfig);// 设置请求和传输超时时间
// CloseableHttpClient httpClient = HttpClients.createDefault();
CloseableHttpClient httpClient = getHttpClient();
try {
CloseableHttpResponse response = httpClient.execute(request); //执行请求
// response.getStatusLine().getStatusCode();
HttpEntity entity = response.getEntity();
if (entity != null) {
// long len = entity.getContentLength();// -1 表示长度未知
String result = EntityUtils.toString(entity);
response.close();
// httpClient.close();
return result;
}
} catch (ClientProtocolException e) {
logger.error("[maperror] HttpClientUtil ClientProtocolException : " + e.getMessage());
throw new MapException(CodeConstant.CODE_CONNECT_FAIL, "HttpClientUtil ClientProtocolException :" + e.getMessage());
} catch (IOException e) {
logger.error("[maperror] HttpClientUtil IOException : " + e.getMessage());
throw new MapException(CodeConstant.CODE_CONNECT_FAIL, "HttpClientUtil IOException :" + e.getMessage());
} finally {
}
return EMPTY_STR;
}
}
以上这篇HttpUtils 发送http请求工具类(实例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
# http请求工具类
# java实现http请求工具类示例
# java发送HttpClient请求及接收请求结果过程的简单实例
# java发送http get请求的两种方法(总结)
# 给大家
# 连接池
# 连接数
# 时间内
# 希望能
# 这篇
# 多说
# 小编
# 大家多多
# 默认值
# message
# PoolingHttpClientConnectionManager
# conn
# BasicNameValuePair
# qhcs
# map
# EntityUtils
# pingan
# HttpClients
# HttpRequestBase
相关文章:
设计网站制作公司有哪些,制作网页教程?
历史网站制作软件,华为如何找回被删除的网站?
网站好制作吗知乎,网站开发好学吗?有什么技巧?
无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?
如何快速重置建站主机并恢复默认配置?
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
已有域名和空间如何搭建网站?
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
深圳网站制作案例,网页的相关名词有哪些?
如何在Ubuntu系统下快速搭建WordPress个人网站?
网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?
制作公司内部网站有哪些,内网如何建网站?
制作网站公司那家好,网络公司是做什么的?
建站之星导航菜单设置与功能模块配置全攻略
如何用已有域名快速搭建网站?
简历在线制作网站免费版,如何创建个人简历?
如何配置FTP站点权限与安全设置?
建站主机选购指南与交易推荐:核心配置解析
Swift中循环语句中的转移语句 break 和 continue
如何快速查询域名建站关键信息?
上海网站制作网站建设公司,建筑电工证网上查询系统入口?
宁波免费建站如何选择可靠模板与平台?
建站主机选哪家性价比最高?
怎么将XML数据可视化 D3.js加载XML
制作宣传网站的软件,小红书可以宣传网站吗?
网站制作软件有哪些,制图软件有哪些?
洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?
如何自定义建站之星模板颜色并下载新样式?
网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?
正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?
网站制作壁纸教程视频,电脑壁纸网站?
如何用AWS免费套餐快速搭建高效网站?
如何通过PHP快速构建高效问答网站功能?
建站ABC备案流程中有哪些关键注意事项?
建站主机类型有哪些?如何正确选型
专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?
零服务器AI建站解决方案:快速部署与云端平台低成本实践
如何用腾讯建站主机快速创建免费网站?
建站之星安装后如何自定义网站颜色与字体?
沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?
图册素材网站设计制作软件,图册的导出方式有几种?
建站之星后台密码遗忘或太弱?如何重置与强化?
c# Task.ConfigureAwait(true) 在什么场景下是必须的
成都网站制作报价公司,成都工业用气开户费用?
建站主机是否等同于虚拟主机?
Android自定义listview布局实现上拉加载下拉刷新功能
网站企业制作流程,用什么语言做企业网站比较好?
php8.4新语法match怎么用_php8.4match表达式替代switch【方法】
网站代码制作软件有哪些,如何生成自己网站的代码?
*请认真填写需求信息,我们会在24小时内与您取得联系。