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

news/2024/12/6 7:48:11/
http://www.w3.org/2000/svg" style="display: none;">

复制即用

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.ppmy.cn/news/1552496.html

相关文章

C# 绘制GDI红绿灯控件

C# 绘制GDI红绿灯控件 using System; using System.Windows.Forms; using System.Drawing;public class TrafficLightControl : Control {protected override void OnPaint(PaintEventArgs e){base.OnPaint(e);Graphics g e.Graphics;g.SmoothingMode System.Drawing.Drawin…

网络(TCP)

目录 TCP socket API 详解 套接字有哪些类型&#xff1f;socket有哪些类型&#xff1f; 图解TCP四次握手断开连接 图解TCP数据报结构以及三次握手&#xff08;非常详细&#xff09; socket缓冲区以及阻塞模式详解 再谈UDP和TCP bind(): 我们的程序中对myaddr参数是这样…

什么是工控机?相对于商业电脑有哪些优势

工控机&#xff0c;全称工业控制计算机&#xff0c;是一种专门设计用于工业环境中的计算机。与传统的商业电脑&#xff08;如个人电脑、笔记本电脑等&#xff09;相比&#xff0c;工控机在构建和选材上考虑了更为严苛的工作条件与功能需求。它们通常用于工业自动化、数据采集、…

【Nacos02】消息队列与微服务之Nacos 单机部署

Nacos 部署 Nacos 部署说明 Nacos 快速开始 Nacos 快速开始 版本选择 当前推荐的稳定版本为2.X Releases alibaba/nacos GitHuban easy-to-use dynamic service discovery, configuration and service management platform for building cloud native applications. - Re…

LVS默认的工作模式支持哪些负载均衡算法?

LVS默认的工作模式支持哪些负载均衡算法? LVS&#xff08;Linux Virtual Server&#xff09;默认支持多种负载均衡算法&#xff0c;这些算法在不同的场景下具有各自的优势。以下是 LVS 默认支持的负载均衡算法及其特点&#xff1a; 1. 轮询调度&#xff08;Round Robin Sched…

使用数据层进行数据生命周期管理

作者&#xff1a;来自 Elastic Stef Nestor Elasticsearch 7.10 使配置数据生命周期变得不再那么复杂。在这篇博文中&#xff0c;我将介绍一些变化、如何使用它们以及一些最佳实践。 数据生命周期可以包含很多阶段&#xff0c;因此我们将涉及&#xff1a; 将集群划分为层&…

HSM_Create函数示例

代码示例 void HSM_Create(HSM _This, const char* name, HSM_STATE *initState) {This->curState initState;This->curState->handler(This, HSME_ENTRY, 0);This->curState->handler(This, HSME_INIT, 0); }详细解析 设置初始状态 This->curState initS…

使用python读取数据建立pptx (python-pptx图文调整案例)

使用python自动读取数据建立pptx 前言如何使用 Python 自动生成 PPTX第一步&#xff1a;安装所需库第二步&#xff1a;创建一个新的 PPTX第三步&#xff1a;添加幻灯片第四步&#xff1a;添加内容添加文本添加图片第五步&#xff1a;保存 PPTX 图文实操案例&#xff08;自动读取…