HttpUtils 发送http请求工具类(实例讲解)
发布时间 - 2026-01-11 02:18:52 点击率:次废话不多说,直接上代码
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
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
香港服务器租用每月最低只需15元?
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
如何在宝塔面板中修改默认建站目录?
如何在云主机上快速搭建多站点网站?
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何基于云服务器快速搭建个人网站?
EditPlus中的正则表达式 实战(2)
Laravel Blade模板引擎语法_Laravel Blade布局继承用法
Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南
使用C语言编写圣诞表白程序
Python数据仓库与ETL构建实战_Airflow调度流程详解
如何在万网自助建站中设置域名及备案?
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
高性能网站服务器配置指南:安全稳定与高效建站核心方案
如何在阿里云高效完成企业建站全流程?
Laravel怎么生成URL_Laravel路由命名与URL生成函数详解
Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】
微信小程序 五星评分(包括半颗星评分)实例代码
Laravel模型关联查询教程_Laravel Eloquent一对多关联写法
网页设计与网站制作内容,怎样注册网站?
开心动漫网站制作软件下载,十分开心动画为何停播?
Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】
Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载
如何用PHP快速搭建高效网站?分步指南
怎样使用JSON进行数据交换_它有什么限制
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
详解jQuery中的事件
Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南
公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?
Laravel如何配置Horizon来管理队列?(安装和使用)
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体
如何用免费手机建站系统零基础打造专业网站?
Laravel如何生成API文档?(Swagger/OpenAPI教程)
如何注册花生壳免费域名并搭建个人网站?
Laravel如何生成URL和重定向?(路由助手函数)
Swift中swift中的switch 语句
重庆市网站制作公司,重庆招聘网站哪个好?
如何快速打造个性化非模板自助建站?
javascript读取文本节点方法小结
网站优化排名时,需要考虑哪些问题呢?
JavaScript中如何操作剪贴板_ClipboardAPI怎么用
安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出
网站建设整体流程解析,建站其实很容易!
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置
油猴 教程,油猴搜脚本为什么会网页无法显示?
新三国志曹操传主线渭水交兵攻略
Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程
下一篇:【Linux内核】零拷贝技术
下一篇:【Linux内核】零拷贝技术

