.pom依赖

            <!--  httpclient  --><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.2</version></dependency><!--  httpcore  --><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpcore</artifactId><version>4.4.5</version></dependency>

Java代码

import lombok.extern.slf4j.Slf4j;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
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.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;import javax.net.ssl.*;
import java.io.*;
import java.net.*;
import java.nio.charset.StandardCharsets;
import java.security.cert.X509Certificate;
import java.util.HashMap;
import java.util.List;
import java.util.Map;/*** HTTP请求工具类** @author woxingxu*/
@Slf4j
public class HttpUtils {private static HttpClient httpClient;static {httpClient = getHttpClient();}/*** 微信统一下单接口发送post请求** @param url        发送请求的URL* @param requestXml map转换xml的报文* @return 所代表远程资源的响应结果*/public static String doPost(String url, String requestXml) {CloseableHttpClient httpClient;CloseableHttpResponse httpResponse;// 创建httpClient连接对象httpClient = HttpClients.createDefault();// 创建post请求连接对象HttpPost httpPost = new HttpPost(url);// 创建连接请求对象,并设置连接参数RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(15000)   // 连接服务区主机超时时间.setConnectionRequestTimeout(60000) // 连接请求超时时间.setSocketTimeout(60000).build(); // 设置读取响应数据超时时间// 为httppost请求设置参数httpPost.setConfig(requestConfig);// 将上传参数放到entity属性中httpPost.setEntity(new StringEntity(requestXml, "UTF-8"));// 添加头信息httpPost.addHeader("Content-type", "text/xml");String result = "";try {// 发送请求httpResponse = httpClient.execute(httpPost);// 从相应对象中获取返回内容HttpEntity entity = httpResponse.getEntity();result = EntityUtils.toString(entity, "UTF-8");} catch (IOException e) {e.printStackTrace();}return result;}/*** 向指定 URL 发送GET方法的请求** @param url   发送请求的 URL* @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。* @return 所代表远程资源的响应结果*/public static String sendGet(String url, String param) {return sendGet(url, param, "UTF-8");}/*** 向指定 URL 发送GET方法的请求** @param url         发送请求的 URL* @param param       请求参数,请求参数应该是 name1=value1&name2=value2 的形式。* @param contentType 编码类型* @return 所代表远程资源的响应结果*/public static String sendGet(String url, String param, String contentType) {StringBuilder result = new StringBuilder();BufferedReader in = null;try {String urlNameString = url + "?" + param;log.info("sendGet - {}", urlNameString);URL realUrl = new URL(urlNameString);URLConnection connection = realUrl.openConnection();connection.setRequestProperty("accept", "*/*");connection.setRequestProperty("connection", "Keep-Alive");connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");connection.connect();in = new BufferedReader(new InputStreamReader(connection.getInputStream(), contentType));String line;while ((line = in.readLine()) != null) {result.append(line);}log.info("recv - {}", result);} catch (ConnectException e) {log.error("调用HttpUtils.sendGet ConnectException, url=" + url + ",param=" + param, e);} catch (SocketTimeoutException e) {log.error("调用HttpUtils.sendGet SocketTimeoutException, url=" + url + ",param=" + param, e);} catch (IOException e) {log.error("调用HttpUtils.sendGet IOException, url=" + url + ",param=" + param, e);} catch (Exception e) {log.error("调用HttpsUtil.sendGet Exception, url=" + url + ",param=" + param, e);} finally {try {if (in != null) {in.close();}} catch (Exception ex) {log.error("调用in.close Exception, url=" + url + ",param=" + param, ex);}}return result.toString();}/*** 向指定 URL 发送POST方法的请求** @param url   发送请求的 URL* @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。* @return 所代表远程资源的响应结果*/public static String sendPost(String url, String param) {PrintWriter out = null;BufferedReader in = null;StringBuilder result = new StringBuilder();try {log.info("sendPost - {}", url);URL realUrl = new URL(url);URLConnection conn = realUrl.openConnection();conn.setRequestProperty("accept", "*/*");conn.setRequestProperty("connection", "Keep-Alive");conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");conn.setRequestProperty("Accept-Charset", "utf-8");conn.setRequestProperty("contentType", "utf-8");conn.setDoOutput(true);conn.setDoInput(true);out = new PrintWriter(conn.getOutputStream());out.print(param);out.flush();in = new BufferedReader(new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8));String line;while ((line = in.readLine()) != null) {result.append(line);}log.info("recv - {}", result);} catch (ConnectException e) {log.error("调用HttpUtils.sendPost ConnectException, url=" + url + ",param=" + param, e);} catch (SocketTimeoutException e) {log.error("调用HttpUtils.sendPost SocketTimeoutException, url=" + url + ",param=" + param, e);} catch (IOException e) {log.error("调用HttpUtils.sendPost IOException, url=" + url + ",param=" + param, e);} catch (Exception e) {log.error("调用HttpsUtil.sendPost Exception, url=" + url + ",param=" + param, e);} finally {try {if (out != null) {out.close();}if (in != null) {in.close();}} catch (IOException ex) {log.error("调用in.close Exception, url=" + url + ",param=" + param, ex);}}return result.toString();}public static String sendSSLPost(String url, String param) {StringBuilder result = new StringBuilder();String urlNameString = url + "?" + param;try {log.info("sendSSLPost - {}", urlNameString);SSLContext sc = SSLContext.getInstance("SSL");sc.init(null, new TrustManager[]{new TrustAnyTrustManager()}, new java.security.SecureRandom());URL console = new URL(urlNameString);HttpsURLConnection conn = (HttpsURLConnection) console.openConnection();conn.setRequestProperty("accept", "*/*");conn.setRequestProperty("connection", "Keep-Alive");conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");conn.setRequestProperty("Accept-Charset", "utf-8");conn.setRequestProperty("contentType", "utf-8");conn.setDoOutput(true);conn.setDoInput(true);conn.setSSLSocketFactory(sc.getSocketFactory());conn.setHostnameVerifier(new TrustAnyHostnameVerifier());conn.connect();InputStream is = conn.getInputStream();BufferedReader br = new BufferedReader(new InputStreamReader(is));String ret;while ((ret = br.readLine()) != null) {if (!"".equals(ret.trim())) {result.append(new String(ret.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8));}}log.info("recv - {}", result);conn.disconnect();br.close();} catch (ConnectException e) {log.error("调用HttpUtils.sendSSLPost ConnectException, url=" + url + ",param=" + param, e);} catch (SocketTimeoutException e) {log.error("调用HttpUtils.sendSSLPost SocketTimeoutException, url=" + url + ",param=" + param, e);} catch (IOException e) {log.error("调用HttpUtils.sendSSLPost IOException, url=" + url + ",param=" + param, e);} catch (Exception e) {log.error("调用HttpsUtil.sendSSLPost Exception, url=" + url + ",param=" + param, e);}return result.toString();}/*** Http Get请求 请求地址** @param url    Get参数* @param params 编码* @param encode 返回请求结果*/public static String sendGetRequest(String url, Map<String, String> params, String encode) {String result = null;try {HttpGet httpGet;if (null == params) {httpGet = new HttpGet(url);} else {httpGet = new HttpGet(url + dealGetParams(params, encode));}HttpResponse response = httpClient.execute(httpGet);if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {result = EntityUtils.toString(response.getEntity());}} catch (IOException e) {e.printStackTrace();}return result != null ? result : "";}public static String sendGetRequest(String url, Map<String, String> params) {return sendGetRequest(url, params, "UTF-8");}public static String sendGetRequest(String url) {return sendGetRequest(url, null, "UTF-8");}public static String sendGetRequestGB2312(String url) {return sendGetRequest(url, null, "GB2312");}/*** POST请求 返回请求结果 HashMap键值参数*/@SuppressWarnings({"unchecked"})public static String sendPostRequest(String url, String header, Object params, String encode) throws Exception {String resultStr = null;HttpPost httpPost = new HttpPost(url);if (params != null) {StringEntity entity;if (params instanceof Map) {entity = new StringEntity(dealPostParams((HashMap<String, String>) params, encode));} else if (params instanceof String) {entity = new StringEntity((String) params, encode);} else if (params instanceof List) {entity = new UrlEncodedFormEntity((List<? extends NameValuePair>) params, encode);} else {throw new Exception("参数有误!");}httpPost.setHeader("Content-Type", "application/json");httpPost.setHeader("Client-Sign", header);httpPost.setEntity(entity);}try {HttpResponse response = httpClient.execute(httpPost);if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {resultStr = EntityUtils.toString(response.getEntity());}} catch (IOException e) {e.printStackTrace();}return resultStr;}public static String sendPostRequest(String url, String header) throws Exception {return sendPostRequest(url, header, "");}/*** 键值对请求 默认UTF-8编码*/public static String sendPostRequest(String url, String header, Map<String, String> params) throws Exception {return sendPostRequest(url, header, params, "UTF-8");}/*** String 默认UTF-8编码*/public static String sendPostRequest(String url, String header, String params) throws Exception {return sendPostRequest(url, header, params, "UTF-8");}/*** 键值对请求 默认UTF-8编码*/public static String sendPostRequest(String url, String header, List<NameValuePair> params) throws Exception {return sendPostRequest(url, header, params, "UTF-8");}/*** 处理Get方式请求的URL*/private static String dealGetParams(Map<String, String> params, String enc) throws UnsupportedEncodingException {StringBuffer sb = new StringBuffer();sb.append("?");for (Map.Entry<String, String> entry : params.entrySet()) {// 参数名=参数&参数名=参数sb.append(entry.getKey()).append("=").append(URLEncoder.encode(entry.getValue(), enc)).append("&");}// 删除最后一个&sb.deleteCharAt(sb.length() - 1);return sb.toString();}/*** 处理POST请求URL*/private static String dealPostParams(Map<String, String> params, String enc) {StringBuffer sb = new StringBuffer();for (Map.Entry<String, String> entry : params.entrySet()) {try {sb.append(entry.getKey()).append("=").append(URLEncoder.encode(entry.getValue(), enc)).append("&");} catch (UnsupportedEncodingException e) {e.printStackTrace();}}sb.deleteCharAt(sb.length() - 1);return sb.toString();}/*** 获取HttpClient*/@SuppressWarnings("deprecation")public static synchronized HttpClient getHttpClient() {if (null == httpClient) {httpClient = new DefaultHttpClient();}return httpClient;}private static class TrustAnyTrustManager implements X509TrustManager {@Overridepublic void checkClientTrusted(X509Certificate[] chain, String authType) {}@Overridepublic void checkServerTrusted(X509Certificate[] chain, String authType) {}@Overridepublic X509Certificate[] getAcceptedIssuers() {return new X509Certificate[]{};}}private static class TrustAnyHostnameVerifier implements HostnameVerifier {@Overridepublic boolean verify(String hostname, SSLSession session) {return true;}}}

Java 常用HTTP请求工具类HttpUtils相关推荐

  1. 【Java】HTTP请求工具类

    前言 在工作中可能存在要去调用其他项目的接口,这篇文章我们实现在Java代码中实现调用其他项目的接口. 本章内容: 创建一个携带参数的POST请求,去请求其他项目的接口并返回数据. 附加HTTP请求工 ...

  2. Java 发送 Http请求工具类

    HttpClient.java package util;import java.io.BufferedReader; import java.io.IOException; import java. ...

  3. java 文件拷贝保留原来的属性_Java常用属性拷贝工具类使用总结

    开头聊几句 1.网上很多的技术文章和资料是有问题的,要学会辨证的看待,不能随便就拿来用,起码要自己验证一下 2.关注当下,关注此刻,如果你真正阅读本篇文章,请花几分钟时间的注意力阅读,相信你会有收获的 ...

  4. java中常用的日期工具类

    java中常用的日期工具类 日期相关的类: package net.yto.ofclacct.core.util;import java.text.ParseException; import jav ...

  5. Java Https请求工具类

    个人技术网站 欢迎关注 由于微信API接口建议使用Https请求方式 而且过不久就废弃http请求方式了 所以提供以下Https工具类 public class SSLClient extends D ...

  6. Android 开源控件与常用开发框架开发工具类

    Android的加载动画AVLoadingIndicatorView 项目地址: https://github.com/81813780/AVLoadingIndicatorView 首先,在 bui ...

  7. HTTP POST 请求工具类

    HTTP/HTTPS POST 请求工具类 Maven pom.xml 引入依赖 <dependency><groupId>org.apache.httpcomponents& ...

  8. HTTP请求工具类(POST)

    HTTP请求工具类    POST请求 package com.cuierdan.utils;import org.apache.logging.log4j.LogManager; import or ...

  9. Java常用http请求库

    文章目录 常用http请求库 1. HttpClient 使用方法 使用示例 2. OKhttp 使用方法 使用示例 3. Retrofit 相关注解 使用方法 使用示例 4. RestTemplat ...

最新文章

  1. 2022-2028年中国金属薄膜行业市场深度监测及投资潜力研究报告
  2. JAVA编译异常处理:java.lang.OutOfMemoryError: PermGen space
  3. ListView和RecyclerView的Adapter封装
  4. oracle替换表merge,sql – Oracle – 如何使用merge根据其他表和列中的值更新列
  5. Linux环境变量中PS1
  6. SAP 电商云 Spartacus UI 同 SAP Customer Data Cloud 的集成
  7. java maven
  8. Android Debug Bridge 技术实现原理
  9. 9个适合web开发人员的CSS工具
  10. Subscription
  11. 浏览器字体大小设置_max浏览器app-max浏览器安卓版
  12. Aiseesoft Screen Recorder入门教程
  13. 计算机无法加入域请确保域名,处理计算机无法加入域的错误一则Server2008
  14. IP协议的详细知识总结
  15. 关于kinfu的配置问题,pcl_kinfu_largeScale
  16. 我对于微信文章的感悟
  17. 数字油田中的虚拟光纤
  18. 在html中写响应式布局的代码,CSS实现响应式布局的方法
  19. Windows查看局域网在线的所有IP
  20. C# winform PictureBox插入图片并设置自适应显示

热门文章

  1. IntelliJ IDEA(Ultimate版本)的下载、安装和WordCount的初步使用(本地模式和集群模式)...
  2. redis和mysql图书管理系统_基于SpringSecurity+SSM+SpringBoot+RabbitMQ+Redis+ShardingJdbc--在线图书管理系统...
  3. python 基于模板生成ppt_python生成ppt的方法
  4. 《操作系统真象还原》第二章 ---- 编写MBR主引导记录 初尝编写的快乐
  5. 自动化报表系统,帮你轻松搞定日报、周报、月报!
  6. 李宏毅机器学习|Task02
  7. Kitti中GPS/IMU数据格式
  8. STM32单片机智能语音温控摇头电风扇落地扇可红外遥控可PWM调速定时温度显示
  9. 人工智能导论 王万良pdf_人工智能导论 14520450722 马航空.pdf
  10. Python气象绘图之Cartopy