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

https/http访问接口工具类,附带ssl忽略证书验证,以及head头部的添加-java版

复制即用

package utils;import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;import javax.net.ssl.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.security.cert.X509Certificate;
import java.util.List;/*** @author lpx* @create 2021-06-28 11:17* @Description http请求工具类* @Version 1.0*/@Slf4j
@Component
public class HttpSendUtils {public static String sendHeaderPostWb(String url, String contentType, String param, List<String> headers) {PrintWriter out = null;BufferedReader in = null;String result = "";HttpURLConnection conn = null;try {URL realUrl = new URL(url);boolean isHttps = "https".equalsIgnoreCase(realUrl.getProtocol());if (isHttps) {// 创建一个忽略证书验证的SSLContextSSLContext sslContext = SSLContext.getInstance("TLS");sslContext.init(null, new X509TrustManager[]{new X509TrustManager() {@Overridepublic X509Certificate[] getAcceptedIssuers() {return null;}@Overridepublic void checkClientTrusted(X509Certificate[] certs, String authType) {}@Overridepublic void checkServerTrusted(X509Certificate[] certs, String authType) {}}}, new java.security.SecureRandom());// 安装所有的信任管理器(仅用于HTTPS)// 注意:在实际应用中,不建议这样做,因为它会绕过SSL/TLS的安全验证。// 这里只是为了演示如何忽略证书验证。SSLContext.setDefault(sslContext);// 创建一个HttpsURLConnection对象HostnameVerifier hv = new HostnameVerifier() {@Overridepublic boolean verify(String hostname, SSLSession session) {return true; // 接受任何主机名}};conn = (HttpsURLConnection) realUrl.openConnection();((HttpsURLConnection) conn).setHostnameVerifier(hv);}else{conn = (HttpURLConnection) realUrl.openConnection();}// 设置通用的请求属性conn.setRequestProperty("Content-Type", contentType);conn.setRequestProperty("accept", "*/*");conn.setRequestProperty("connection", "Keep-Alive");conn.setRequestProperty("Accept-Charset", "UTF-8");conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");if (!headers.isEmpty()) {for (String header : headers) {String[] parts = header.split(":");conn.setRequestProperty(parts[0].trim(), parts[1].trim());}}// 发送POST请求必须设置如下两行conn.setDoOutput(true);conn.setDoInput(true);// 获取URLConnection对象对应的输出流out = new PrintWriter(conn.getOutputStream());// 发送请求参数out.print(param);// flush输出流的缓冲out.flush();// 定义BufferedReader输入流来读取URL的响应in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));String line;while ((line = in.readLine()) != null) {result += line;}} catch (Exception e) {e.printStackTrace();} finally {try {if (out != null) {out.close();}if (in != null) {in.close();}} catch (IOException ex) {ex.printStackTrace();}}return result;}
}
http://www.lryc.cn/news/497318.html

相关文章:

  • node.js基础学习-express框架-静态资源中间件express.static(十一)
  • Python语法基础---正则表达式
  • Uniapp 微信小程序分享 - 自定义绘制分享图片
  • 鸿蒙技术分享:Navigation页面容器封装-鸿蒙@fw/router框架源码解析(三)
  • 三步入门Log4J 的使用
  • VBA中类的解读及应用第十八讲:利用类方法,判断任意单元格类型
  • 查询品牌涉及两张表(brand、brand_admin_mapping)
  • Eureka和Zookeeper、Nacos的区别
  • 微信小程序怎么实现非tabbar页面显示tabbar,自定义组件实现
  • SpringBoot如何使用EasyExcel实现表格导出(简洁快速入门版本)
  • 多种平台上安装部署调试Open5GS(四)
  • 单片机的基本构成与工作原理
  • opencv常用图像处理操作
  • Svn如何切换删除账号
  • 使用PaddleOCR遇到的问题Bug
  • 了解Xcode在iOS开发中的作用和功能有哪些
  • 《船舶物资与市场》是什么级别的期刊?是正规期刊吗?能评职称吗?
  • 商汤完成组织架构调整,改革完成的商汤未来何在?
  • MyBatis异常体系中ErrorContext和ExceptionFactory原理分析
  • WHLUG丨deepin、华中科技大学开放原子开源俱乐部、 RustSBI 和清华大学开源操作系统训练营共话开源新生代成长之路
  • 通过HTML Canvas 在图片上绘制文字
  • C# 冒泡的算法
  • 大数据项目-Django基于聚类算法实现的房屋售房数据分析及可视化系统
  • AWS创建ec2实例并连接成功
  • TypeScript 开始学习 -接触的新东西
  • 非对称任意进制转换器(安卓)
  • 【优选算法篇】寻找隐藏的宝藏:用二分查找打开算法世界的大门(上篇)
  • 基于Vue实现的移动端手机商城项目 电商购物网站 成品源码
  • C语言:数组
  • 时间序列预测之FiLM