一,maven需要的配置

 <dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.7</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.58</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.3</version></dependency>

如果对日志有自己的需求,可根据实际情况添加自己需要的日志依赖。

二,封装Apache http client工具类

package com.jingjin.socket.util;import com.alibaba.fastjson.JSONObject;
import org.apache.http.Consts;
import org.apache.http.HttpStatus;
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.utils.URIBuilder;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.slf4j.LoggerFactory;import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;//http调用工具类
public class HttpClientUtil {private static org.slf4j.Logger logger = LoggerFactory.getLogger(HttpClientUtil.class);private static final int DEFULT_TIMEOUT = 30 * 1000;//默认超时时间20秒/*** 调用http get请求* @param url* @param params* @return*/public static String doGet(String url, Map<String, Object> params) {return doGet(url, null, params, null);}/*** 调用http get请求* @param url* @param params* @param timeout* @return*/public static String doGet(String url,Map<String,Object> params,Integer timeout){return doGet(url, null, params, timeout);}/**** @param url* @param headers* @param params* @param timeout* @return*/private static String doGet(String url, Map<String, String> headers, Map<String, Object> params, Integer timeout) {//创建httpClient对象CloseableHttpClient httpClient = HttpClients.createDefault();String resultString = null;CloseableHttpResponse response = null;try {//创建uriURIBuilder builder = new URIBuilder(url);if (params != null) {//uri添加参数for (String key : params.keySet()) {builder.addParameter(key, String.valueOf(params.get(key)));}}URI uri = builder.build();//创建hTTP get请求HttpGet httpGet = new HttpGet(uri);//设置超时时间int timeoutTmp = DEFULT_TIMEOUT;if (timeout != null) {timeoutTmp = timeout;}RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(timeoutTmp).setConnectionRequestTimeout(timeoutTmp).setSocketTimeout(timeoutTmp).build();httpGet.setConfig(requestConfig);//设置头信息if(null!=headers){for (String key:headers.keySet()) {httpGet.setHeader(key,headers.get(key));}}//执行请求response=httpClient.execute(httpGet);if (HttpStatus.SC_OK==response.getStatusLine().getStatusCode()){resultString= EntityUtils.toString(response.getEntity(), Consts.UTF_8);}} catch (URISyntaxException e) {logger.error("http调用异常" + e.toString(), e);}catch (IOException e){logger.error("http调用异常" + e.toString(), e);}finally {try {if(null!=response){response.close();}}catch (IOException e){logger.error("response关闭异常" + e.toString(), e);}try {if(null!=httpClient){httpClient.close();}}catch (IOException e){logger.error("httpClient关闭异常" + e.toString(), e);}}return resultString;}/*** 调用http post请求(json数据)* @param url* @param json* @return*/public static JSONObject doJsonPost(String url,JSONObject json){CloseableHttpClient httpClient = HttpClientBuilder.create().build();HttpPost post = new HttpPost(url);CloseableHttpResponse httpResponse=null;JSONObject response=null;try {StringEntity s = new StringEntity(json.toString(), Consts.UTF_8);s.setContentType("application/json");//发送json数据需要设置的contentTypepost.setEntity(s);httpResponse=httpClient.execute(post);if (httpResponse.getStatusLine().getStatusCode()==HttpStatus.SC_OK){String result=EntityUtils.toString(httpResponse.getEntity());//返回json格式response=JSONObject.parseObject(result);}}catch (Exception e){throw  new RuntimeException(e);}finally {try {if (httpResponse!=null){httpResponse.close();}}catch (IOException e){logger.error("关闭httpResponse异常"+e.toString(),e);}try {if (httpClient!=null){httpClient.close();}}catch (IOException e){logger.error("关闭httpResponse异常"+e.toString(),e);}}return response;}/*** post请求* @param url* @param params* @return*/public static String doPost(String url,Map<String,Object> params){return doPost(url,null,params,null);}/*** post请求 带时间* @param url* @param params* @param timeout* @return*/public static String doPost(String url,Map<String,Object> params,Integer timeout){return doPost(url,null,params,timeout);}/*** 调用http post请求 基础方法* @param url 请求的url* @param headers 请求头* @param params 参数* @param timeout 超时时间* @return*/public static String doPost(String url,Map<String,String> headers,Map<String,Object> params,Integer timeout){CloseableHttpClient httpClient = HttpClients.createDefault();CloseableHttpResponse response=null;String resultString="";try {//创建http post请求HttpPost httpPost = new HttpPost(url);//设置超时时间int timeoutTmp=DEFULT_TIMEOUT;if (timeout!=null){timeoutTmp=timeout;}RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(timeoutTmp).setConnectionRequestTimeout(timeoutTmp).setSocketTimeout(timeoutTmp).build();httpPost.setConfig(requestConfig);//设置参数信息if (params!=null){List<NameValuePair> paramList=new ArrayList<>();for (String key:params.keySet()) {paramList.add(new BasicNameValuePair(key,String.valueOf(params.get(key))));}//模拟表单UrlEncodedFormEntity entity = new UrlEncodedFormEntity(paramList, Consts.UTF_8);httpPost.setEntity(entity);}//设置头信息if (headers!=null){for (String key:headers.keySet()) {httpPost.setHeader(key,headers.get(key));}}//执行http请求response=httpClient.execute(httpPost);if (response.getStatusLine().getStatusCode()==HttpStatus.SC_OK){resultString=EntityUtils.toString(response.getEntity(),Consts.UTF_8);}}catch (UnsupportedEncodingException e){logger.error("调用http异常"+e.toString(),e);}catch (ClientProtocolException e){logger.error("调用http异常"+e.toString(),e);}catch (IOException e){logger.error("调用http异常"+e.toString(),e);}finally {try {if (null != response) {response.close();}} catch (IOException e) {logger.error("关闭response异常"+e.toString(),e);}try {if (null != httpClient) {httpClient.close();}} catch (IOException e) {logger.error("关闭httpClient异常"+e.toString(),e);}}return resultString;}
}

可以使用当前工具进行远程http调用,支持post和get。

封装Apache http client工具类相关推荐

  1. 第十三天 - 封装JDBC操作Hive工具类 - HWI配置与使用 - JavaWeb结合Hive

    第十三天 - 封装JDBC操作Hive工具类 - HWI配置与使用 - JavaWeb结合Hive 第十三天 - 封装JDBC操作Hive工具类 - HWI配置与使用 - JavaWeb结合Hive ...

  2. 封装一个邮件发送工具类,一个字,巴适

    系列文章目录 文章目录 系列文章目录 前言 一. 介绍 二.二话不说开始干 1.引入库 2. 邮件发送实体(Mail) 3. 邮件发送类型枚举(MailType ) 4.邮件发送抽象类(Abstrac ...

  3. ( 持续更新,目前含 200+ 工具类 ) DevUtils 是一个 Android 工具库, 主要根据不同功能模块,封装快捷使用的工具类及 API 方法调用。

    DevUtils GitHub About ( 持续更新,目前含 200+ 工具类 ) Roadmap DevUtils 是一个 Android 工具库,主要根据不同功能模块,封装快捷使用的工具类及 ...

  4. Flutter - 一个fultter练习项目(仿写微信UI、实现一些常用效果、封装通用组件和工具类)

    demo 地址: https://github.com/iotjin/jh_flutter_demo 代码不定时更新,请前往github查看最新代码 pwd:123456 代码不定期更新 注:Flut ...

  5. apache commons常用工具类

    1.有些情况下,Arrays满足不到你对数组的操作?不要紧,ArrayUtils帮你 ArrayUtils public class TestMain {  public static void ma ...

  6. Java 基于mail.jar 和 activation.jar 封装的邮件发送工具类

    准备工作 发送邮件需要获得协议和支持! 开启服务 POP3/SMTP 服务 如何开启 POP3/SMTP 服务:https://blog.csdn.net/weixin_44953227/articl ...

  7. org.apache.commons.commons-lang3工具类(一)

    https://blog.csdn.net/qq_31289187/article/details/85343068 本文只是简单的介绍了commons-lang3中的SystemUtils.Stri ...

  8. 常用工具类 (一) : Apache Commons 常用工具类整理 (全)

    文章目录 一.commons-lang3 引入依赖 StringUtils 字符串工具类 StringEscapeUtils 转义字符串工具类 NumberUtils 数字工具类 ArrayUtils ...

  9. Apache Commons StringUtils工具类深入整理

    字符串是在程序开发中最常见的,Apache Commons开源项目在org.apache.commons.lang3包下提供了StringUtils工具类,该类相当于是对jdk自带的String类的增 ...

  10. java封装Mongodb3.2.1工具类

    由于最近项目要使用mongodb来处理一些日志,提前学习了一下mongodb的一些基本用法,大概写了一些常用的. 开发环境为:WIN7-64,JDK7-64,MAVEN3.3.9-64,IDEA201 ...

最新文章

  1. 33条C#、.Net经典面试题目及答案[zt]
  2. [html] 能否做到禁止打印页面?如果可以那要怎么做?
  3. 哈希表数据结构_算法与数据结构-哈希表
  4. matlab窗函数 响应,matlab窗函数设计方案.doc
  5. System.IO.Directory.Delete 方法的使用
  6. junit5 动态测试_JUnit 5动态测试– @ TestFactory,DynamicTest
  7. 使用Jenkins搭建持续集成环境的方法(二)
  8. loader-wizard.php,安装ioncube扩展
  9. DNS 的工作原理——域名系统
  10. BMS(Battery Management System)是什么?
  11. 域名解析的DNS缓存如何清理
  12. viewerjs 在html打开图片或打开pdf文件使用案例
  13. 马克下, 初识 runtime (一)
  14. 基于truffle-contract库之solidity事件与合约调用完整案例!
  15. 计算机网络的发展经历了几个阶段?每个阶段各有什么特点?
  16. java MP3等格式转换和压缩
  17. 论文写作 10: 文献综述不可进行简单的罗列
  18. 一加3t刷机后还卡_一加3T变砖之后如何自救?一加3T线刷救砖教程详解
  19. CentOS镜像下载(centos7、centos8)
  20. 一建今年大放水,23年会不会难度剧增?

热门文章

  1. 实战:小程序购物商城
  2. 显示图片_Pycharm图片独立显示与imshow()无法显示
  3. 各种常用STL容器选择 需求分析笔记
  4. Type erroe in tensorflow
  5. caffe调参经验资料文章
  6. 【一天一个C++小知识】007.C++中的struct、enum和union以及内存对齐与大小端问题
  7. Java添加事件监听的四种方法代码实例
  8. Matlab实现批量修改文件名
  9. 正则表达式 10. 分组可选
  10. Hadoop step by step _ install and configuration environment