maven依赖

如果有没写完整的maven, 可以使用idea工具的自动导入

     <dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId></dependency><dependency><groupId>commons-httpclient</groupId><artifactId>commons-httpclient</artifactId><version>3.0</version></dependency>

工具类代码

一般用于自测和三方联调

import io.netty.util.internal.StringUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.RequestEntity;
import org.apache.commons.httpclient.methods.StringRequestEntity;
import org.apache.commons.httpclient.params.HttpClientParams;
import org.apache.commons.httpclient.params.HttpConnectionManagerParams;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.ParseException;
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.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.CoreConnectionPNames;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;@Slf4j
public class HttpUtil {private HttpUtil(){}private static void configTimeout(HttpClient httpClient){HttpConnectionManagerParams params = httpClient.getHttpConnectionManager().getParams();params.setConnectionTimeout(20000);params.setSoTimeout(20000);}public static String post(String url, String reqParam) throws Exception {HttpClient httpClient = new HttpClient();// 请求urlPostMethod method = new PostMethod(url);configTimeout(httpClient);// 设置请求编码UTF-8method.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");method.addRequestHeader(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");RequestEntity entity = new StringRequestEntity(reqParam);method.setRequestEntity(entity);// 执行post请求httpClient.executeMethod(method);// 请求返回String respResult = method.getResponseBodyAsString();// 释放连接method.releaseConnection();return respResult;}public static String jsonPost(String url, String reqParam) throws Exception {HttpClient httpClient = new HttpClient();// 请求urlPostMethod method = new PostMethod(url);configTimeout(httpClient);// 设置请求编码UTF-8method.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");method.addRequestHeader(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");RequestEntity entity = new StringRequestEntity(reqParam, "application/json", "utf-8");method.setRequestEntity(entity);// 执行post请求httpClient.executeMethod(method);// 请求返回String respResult = method.getResponseBodyAsString();// 释放连接method.releaseConnection();log.info("请求{}返回:{}", url, respResult);return respResult;}public static String post(String url, String reqParam, String charSet) throws Exception {HttpClient httpClient = new HttpClient();// 请求urlPostMethod method = new PostMethod(url);configTimeout(httpClient);// 设置请求编码UTF-8method.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, charSet);method.addRequestHeader(HttpMethodParams.HTTP_CONTENT_CHARSET, charSet);RequestEntity entity = new StringRequestEntity(reqParam);method.setRequestEntity(entity);// 执行post请求httpClient.executeMethod(method);// 请求返回String respResult = method.getResponseBodyAsString();// 释放连接method.releaseConnection();log.info("请求{}返回:{}", url, respResult);return respResult;}public static String get(String url, String reqParam) throws Exception {//      reqParam = URLEncoder.encode(reqParam, "UTF-8");HttpClient httpClient = new HttpClient();GetMethod method;if(StringUtil.isNullOrEmpty(reqParam)){// 请求url及参数method = new GetMethod(url);}else {System.out.println("------请求URL:"+url + "?" +reqParam);// 请求url及参数method = new GetMethod(url + "?" +reqParam);}configTimeout(httpClient);// 设置请求编码UTF-8method.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");method.addRequestHeader(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");// 执行get请求httpClient.executeMethod(method);// 请求返回String respResult = method.getResponseBodyAsString();// 释放连接method.releaseConnection();log.info("请求{}返回:{}", url, respResult);return respResult;}public static String get(String url, String reqParam, String charSet) throws Exception {//       reqParam = URLEncoder.encode(reqParam, "UTF-8");HttpClient httpClient = new HttpClient();GetMethod method;if(StringUtil.isNullOrEmpty(reqParam)){// 请求url及参数method = new GetMethod(url);}else {System.out.println("请求URL字符串:"+url + "?" +reqParam);// 请求url及参数method = new GetMethod(url + "?" +reqParam);}configTimeout(httpClient);// 设置请求编码UTF-8method.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, charSet);method.addRequestHeader(HttpMethodParams.HTTP_CONTENT_CHARSET, charSet);// 执行get请求httpClient.executeMethod(method);// 请求返回String respResult = method.getResponseBodyAsString();// 释放连接method.releaseConnection();log.info("请求{}返回:{}", url, respResult);return respResult;}/*** 添加header "Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"*/public static String postHeader(String url, String reqParam) throws Exception {HttpClient httpClient = new HttpClient();HttpClientParams params = new HttpClientParams();//另外设置http client的重试次数,默认是3次;当前是禁用掉(如果项目量不到,这个默认即可)params.setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler(0, false));httpClient.setParams(params);// 请求urlPostMethod method = new PostMethod(url);configTimeout(httpClient);// 设置请求编码UTF-8method.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");method.addRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");RequestEntity entity = new StringRequestEntity(reqParam);method.setRequestEntity(entity);// 执行post请求httpClient.executeMethod(method);// 请求返回String respResult = method.getResponseBodyAsString();// 释放连接method.releaseConnection();log.info("请求{}返回:{}", url, respResult);return respResult;}@SuppressWarnings({ "deprecation", "unused" })private static HttpPost postForm(String url, Map<String, String> params){  HttpPost httpost = new HttpPost(url);  List<NameValuePair> nvps = new ArrayList <>();Set<String> keySet = params.keySet();  for(String key : keySet) {  nvps.add(new BasicNameValuePair(key, params.get(key)));  }  try {  httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));  } catch (UnsupportedEncodingException e) {  e.printStackTrace();  }  return httpost;  }/*** post请求<设置请求头>* @param url 请求地址* @param reqParamName 请求参数名称* @param reqParamValue 请求参数值* @param charSet 编码格式* @author yew* date 2017年7月26日 下午2:11:40*/public static String postRequset(String url, String reqParamName, String reqParamValue, String charSet) throws Exception {HttpClient httpClient = new HttpClient();// 请求urlPostMethod method = new PostMethod(url);configTimeout(httpClient);// 设置请求编码UTF-8method.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, charSet);method.addRequestHeader(HttpMethodParams.HTTP_CONTENT_CHARSET, charSet);//设置参数请求头method.setParameter(reqParamName, reqParamValue);// 执行post请求httpClient.executeMethod(method);// 请求返回String respResult = method.getResponseBodyAsString();// 释放连接method.releaseConnection();log.info("请求{}返回:{}", url, respResult);return respResult;}public static String jsonPostHeader(String url, String reqParam, String accessToken, String version) throws Exception {HttpClient httpClient = new HttpClient();// 请求urlPostMethod method = new PostMethod(url);configTimeout(httpClient);// 设置请求编码UTF-8method.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");method.addRequestHeader(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");method.addRequestHeader("accessToken", accessToken);method.addRequestHeader("version", version);RequestEntity entity = new StringRequestEntity(reqParam, "application/json", "utf-8");method.setRequestEntity(entity);// 执行post请求httpClient.executeMethod(method);// 请求返回String respResult = method.getResponseBodyAsString();// 释放连接method.releaseConnection();log.info("请求{}返回:{}", url, respResult);return respResult;}public static String jsonPostHeader(String url, String reqParam) throws Exception {HttpClient httpClient = new HttpClient();// 请求urlPostMethod method = new PostMethod(url);configTimeout(httpClient);// 设置请求编码UTF-8method.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");method.addRequestHeader(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");RequestEntity entity = new StringRequestEntity(reqParam, "application/xml", "utf-8");method.setRequestEntity(entity);// 执行post请求httpClient.executeMethod(method);// 请求返回String respResult = method.getResponseBodyAsString();// 释放连接method.releaseConnection();log.info("请求{}返回:{}", url, respResult);return respResult;}/*** post key-value形式传参* @param url 请求url* @param paramsMap 请求的map数据* @return*/public static String postFormMap(String url, Map<String, Object> paramsMap) {CloseableHttpClient closeableHttpClient = HttpClients.createDefault();//配置连接超时时间RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(5000).setConnectionRequestTimeout(5000).setSocketTimeout(5000).setRedirectsEnabled(true).build();HttpPost httpPost = new HttpPost(url);//设置超时时间httpPost.setConfig(requestConfig);//装配post请求参数List<NameValuePair> list = new ArrayList<>();for (String key : paramsMap.keySet()) {list.add(new BasicNameValuePair(key, String.valueOf(paramsMap.get(key))));}try {//将参数进行编码为合适的格式,如将键值对编码为param1=value1&param2=value2UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(list, "utf-8");httpPost.setEntity(urlEncodedFormEntity);//执行 post请求CloseableHttpResponse closeableHttpResponse = closeableHttpClient.execute(httpPost);String result = "";if (null != closeableHttpResponse) {System.out.println(closeableHttpResponse.getStatusLine().getStatusCode());if (closeableHttpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {HttpEntity httpEntity = closeableHttpResponse.getEntity();result = EntityUtils.toString(httpEntity);} else {result = "Error Response" + closeableHttpResponse.getStatusLine().getStatusCode();}}log.info("请求{}返回:{}", url, result);return result;} catch (ClientProtocolException e) {e.printStackTrace();return "协议异常";} catch (ParseException e) {e.printStackTrace();return "解析异常";} catch (IOException e) {e.printStackTrace();return "传输异常";} finally {try {if (closeableHttpClient != null) {closeableHttpClient.close();}} catch (IOException e) {e.printStackTrace();}}}/*** @param url* @param reqParam 请求参数* @param headerParam 请求头参数* @return*/public static String post(String url, String reqParam,Map<String,Object> headerParam) throws Exception {HttpClient httpClient = new HttpClient();httpClient.getParams().setIntParameter(CoreConnectionPNames.SO_TIMEOUT, 5000);httpClient.getParams().setIntParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 3000);// 请求urlPostMethod method = new PostMethod(url);configTimeout(httpClient);// 设置请求编码UTF-8method.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");method.addRequestHeader(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");for (Map.Entry<String, Object> vo : headerParam.entrySet()) {method.addRequestHeader(vo.getKey(),vo.getKey());}RequestEntity entity = new StringRequestEntity(reqParam);method.setRequestEntity(entity);// 执行post请求httpClient.executeMethod(method);// 请求返回String respResult = method.getResponseBodyAsString();// 释放连接method.releaseConnection();return respResult;}public static String get(String url, Map<String,Object> headerParam) throws Exception {HttpClient httpClient = new HttpClient();httpClient.getParams().setIntParameter(CoreConnectionPNames.SO_TIMEOUT, 5000);httpClient.getParams().setIntParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 3000);GetMethod method;method = new GetMethod(url);configTimeout(httpClient);// 设置请求编码UTF-8method.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");method.addRequestHeader(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");for (Map.Entry<String, Object> vo : headerParam.entrySet()) {method.addRequestHeader(vo.getKey(),vo.getKey());}// 执行get请求httpClient.executeMethod(method);// 请求返回String respResult = method.getResponseBodyAsString();// 释放连接method.releaseConnection();log.info("请求{}返回:{}", url, respResult);return respResult;}}

HttpUtil 工具类相关推荐

  1. 拿来即用,HttpUtil工具类

    HttpUtil工具类 注意低版本有bug.https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient <!- ...

  2. 一个拿来即用的httputil工具类

    工作中难免会用httpclien进行数据的跨系统传输,这几天老在用,调别的系统的接口,今天就给大家分享出来我用的工具类吧,主要是后期我用的时候可以找到. package com.cnlive.shen ...

  3. HttpClient进行服务器传递信息,HttpUtil工具类

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.引入Maven依赖 二.使用步骤 1.服务器A控制层 2.服务器B控制层 前言 使用httpclient实现两个服 ...

  4. 一个简单易用的Http访问工具类for Android

    前言 去年(2017)参加服务外包省赛的时候,负责App开发的我遇到了一个小难题--Http请求.虽说已经有成熟的HttpUrlConnection库供使用,但依然感到有些不方便:进行一次简单的请求并 ...

  5. http工具类发送post和get请求

    文章目录 http协议 一.发送GET请求 二.发送POST请求 总结 http协议 HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型.HTTP是一个无状态的协议. 提示:以下 ...

  6. java 百度api人脸识别功能(人脸识别+详细案例+接口及所需工具类)

    最近开发过程中需要用到人脸识别认证功能,然后就用的是百度API接口进行开发,起初设想用直接用人脸识别还是用注册到百度人脸库识别两种方法,为了简化开发直接就用了第一种方式: 直接上业务逻辑代码吧: po ...

  7. Hutool Http客户端工具类-HttpUtil使用

    HttpUtil是应对简单场景下Http请求的工具类封装,这个工具类可以保证在一个方法之内完成Http请求. 1 HttpUtil.get() 用于请求普通页面,然后返回页面内容的字符串,同时提供一些 ...

  8. Java工具类:HttpUtil(HttpClient实现http的请求,获取响应)

    (1)maven 依赖: <!-- HttpClinet 核心包 --> <dependency><groupId>org.apache.httpcomponent ...

  9. httpclient工具类,post请求发送json字符串参数,中文乱码处理

    在使用httpclient发送post请求的时候,接收端中文乱码问题解决. 正文: 我们都知道,一般情况下使用post请求是不会出现中文乱码的.可是在使用httpclient发送post请求报文含中文 ...

  10. http工具类(支持https,连接池和失败重试)

    在实际项目中,经常会遇到调用外部(第三方)的接口,如果调用量较大的话,可能需要考虑连接池.失败重试.SSL证书等问题,以提升性能和稳定性. 以下代码是封装的小组件,供大家参考. maven依赖 < ...

最新文章

  1. jQuery性能优化指南
  2. str量化转化为int
  3. C++ : 返回两个字符串的最长公共字符串
  4. android --- fastboot 协议学习
  5. [C#-Util]ObjectPool Prototype
  6. ginx+Tomcat负载均衡配置
  7. 基于CSS class的事件监听管理机制 (转)
  8. 单片机最小系统着实让人着迷
  9. 华硕主板无盘启动bios设置_华硕主板怎么进入bios?华硕主板进入bios设置u盘启动方法...
  10. 死链检查工具 Xenu
  11. mysql 用户名唯一,mysql用户名和密码(mysql忘记用户名密码)
  12. no input file specified 三种解决办法
  13. mysql 循环之continue
  14. 基于TDOA声源定位算法仿真–MATLAB仿真
  15. mac python2.7升级到3.7_Mac下python2.7 升级到3.7
  16. 江南大学计算机专硕学硕,考研择校分析 — 江南大学
  17. Martin Fowler先生关于持续集成的一篇文章
  18. 加密解密工具 之 波利比奥斯方阵密码
  19. 编写第一个c语言程序
  20. android文件管理器获取路径,获取Android文件的绝对路径

热门文章

  1. 《编程之美》-- 学习与思考
  2. 模糊综合评价模型详解
  3. c语言编写简单实用的小程序,C语言编写一个小程序
  4. 电子技术基础数字部分第六版_电子技术基础 数字部分 第六版课后参考答案 (康华光 高等教育)...
  5. QT出现“d:\Program Files (x86)\SogouInput\Components\”问题初步想法
  6. 简约清新二次元引导个人主页源码
  7. DevKitPro(GBA),MakeFile文件大概分析(编译)
  8. Establishing a tunnel via proxy server failed;
  9. ntpdate从指定服务器同步时间,ntpdate:设置服务器时间定期同步
  10. 进入linux jed文本编辑怎么退出,Linux文本编辑器Jed