当前位置: 首页 > news >正文

HttpUtil工具

http工具

用到的依赖

<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.13</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpmime</artifactId><version>4.5.13</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.11.0</version></dependency>

httpUtil工具

import org.apache.commons.io.IOUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.config.RequestConfig;
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.utils.HttpClientUtils;
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.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import java.util.Map;/*** http请求工具类*/
public class HttpUtil {private static final Logger logger = LoggerFactory.getLogger(HttpUtil.class);private static PoolingHttpClientConnectionManager connMgr = new PoolingHttpClientConnectionManager();private static RequestConfig requestConfig;private static final String DEFAULT_CHARSET = "UTF-8";public HttpUtil() {}static {connMgr.setMaxTotal(100);connMgr.setDefaultMaxPerRoute(connMgr.getMaxTotal());RequestConfig.Builder configBuilder = RequestConfig.custom();configBuilder.setConnectTimeout(5000);configBuilder.setSocketTimeout(20000);configBuilder.setConnectionRequestTimeout(5000);requestConfig = configBuilder.build();}/*** Post方式** @param apiUrl* @param json      json数据* @param headerMap 请求头* @return*/public static String doPost(String apiUrl, String json, Map<String, String> headerMap) throws Exception {long start = System.currentTimeMillis();CloseableHttpClient httpClient = HttpClients.createDefault();String httpStr = null;HttpPost httpPost = new HttpPost(apiUrl);CloseableHttpResponse response = null;int statusCode = -999;try {httpPost.setConfig(requestConfig);StringEntity stringEntity = new StringEntity(json.toString(), DEFAULT_CHARSET);stringEntity.setContentEncoding(DEFAULT_CHARSET);//循环增加headerif (headerMap != null) {Iterator headerIterator = headerMap.entrySet().iterator();while (headerIterator.hasNext()) {Map.Entry<String, String> elem = (Map.Entry<String, String>) headerIterator.next();httpPost.addHeader(elem.getKey(), elem.getValue());}}stringEntity.setContentType("application/json");httpPost.setEntity(stringEntity);response = httpClient.execute(httpPost);HttpEntity entity = response.getEntity();statusCode = response.getStatusLine().getStatusCode();httpStr = EntityUtils.toString(entity, DEFAULT_CHARSET);} catch (Exception e) {logger.error("HttpUtil发生错误:", e);throw new Exception("网络异常", e);} finally {if (response != null) {try {EntityUtils.consume(response.getEntity());} catch (IOException var19) {var19.printStackTrace();}}logger.info("request to:{},param:{},response code:{},result:{},cost {} ms", new Object[]{apiUrl, json, statusCode, httpStr, System.currentTimeMillis() - start});}return httpStr;}/*** 请求方式 Get** @param url       请求链接* @param params    以 x-www-form-urlencoded* @param headerMap 请求头参数* @return*/public static String doGet(String url, Map<String, Object> params, Map<String, String> headerMap) throws Exception {long start = System.currentTimeMillis();StringBuffer param = new StringBuffer();if (null != params) {int i = 0;for (Iterator iterator = params.keySet().iterator(); iterator.hasNext(); ++i) {String key = (String) iterator.next();if (i == 0) {param.append("?");} else {param.append("&");}param.append(key).append("=").append(params.get(key));}}String apiUrl = url + param;String result = null;CloseableHttpClient httpClient = HttpClients.createDefault();int statusCode = -999;try {HttpGet httpGet = new HttpGet(apiUrl);//循环增加headerif (headerMap != null) {Iterator headerIterator = headerMap.entrySet().iterator();while (headerIterator.hasNext()) {Map.Entry<String, String> elem = (Map.Entry<String, String>) headerIterator.next();httpGet.addHeader(elem.getKey(), elem.getValue());}}HttpResponse response = httpClient.execute(httpGet);statusCode = response.getStatusLine().getStatusCode();HttpEntity entity = response.getEntity();if (entity != null) {InputStream instream = entity.getContent();result = IOUtils.toString(instream, DEFAULT_CHARSET);}} catch (Exception e) {logger.error("HttpUtil发生错误:", e);throw new Exception("网络异常", e);} finally {if (httpClient != null) {HttpClientUtils.closeQuietly(httpClient);}logger.info("request to:{},param:{},response code:{},result:{},cost {} ms", new Object[]{apiUrl, param.toString(), statusCode, result, System.currentTimeMillis() - start});}return result;}}
http://www.lryc.cn/news/400386.html

相关文章:

  • 并发编程-锁的分类
  • K8S系列-Kubernetes基本概念及Pod、Deployment、Service的使用
  • 在VSCode上创建Vue项目详细教程
  • Go语言入门之流程控制简述
  • 接口测试框架基于模板自动生成测试用例!
  • C++ STL stable_sort用法
  • YOLO v8进行目标检测的遇到的bug小结
  • FastAPI -- 第二弹(响应模型、状态码、路由APIRouter、后台任务BackgroundTasks)
  • 案例 | 人大金仓助力山西政务服务核心业务系统实现全栈国产化升级改造
  • 如何用python写接口
  • 轻量级可扩展易航网址引导系统源码V2.45
  • 解决ESLint和Prettier冲突的问题
  • C判断一个点在三角形上
  • 物业系统自主研发接口测试框架
  • 手机和电脑通过TCP传输
  • Git 在commit后,撤销commit
  • 多模态大模型 - MM1
  • FPGA设计之跨时钟域(CDC)设计篇(2)----如何科学地设计复位信号?
  • GPS北斗标准时钟同步服务器结构是什么?安徽京准
  • 9.5 栅格图层符号化多波段彩色渲染
  • 力扣第九题
  • 鞭炮插画:成都亚恒丰创教育科技有限公司
  • python 循环
  • 映美精黑白相机IFrameQueueBuffer转halcon的HObject
  • Linux的load(负载)
  • 杜比全景声——空间音频技术
  • C 语言指针进阶
  • SpringBootWeb 篇-入门了解 Swagger 的具体使用
  • Python面试题:如何在 Python 中处理大数据集?
  • C++:入门基础