Java原生HttpClient怎么使用
1.信任证书管理类packagecn.wja.component;importjavax.net.ssl.TrustManager;importjavax.net.ssl.X509TrustManager;importjava.security.cert.X509Certificate;classMyX509TrustManagerimplementsX509TrustManager{@OverridepublicvoidcheckClientTrusted(X509Certificate[]x509Ce
1.信任证书管理类
package cn.wja.component;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.security.cert.X509Certificate;
class MyX509TrustManager implements X509TrustManager {
@Override
public void checkClientTrusted(X509Certificate[] x509Certificates, String s) {
}
@Override
public void checkServerTrusted(X509Certificate[] x509Certificates, String s) {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return null;
}
public static TrustManager[] getTrustManagers() {
TrustManager[] trustAllCertificates = {new MyX509TrustManager()};
return trustAllCertificates;
}
}2.HttpClient类
package cn.wja.component;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLParameters;
import javax.net.ssl.TrustManager;
import java.net.http.HttpClient;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.time.Duration;
public class MyHttpClient {
static public HttpClient getClient() throws NoSuchAlgorithmException, KeyManagementException {
TrustManager[] trustManagers = MyX509TrustManager.getTrustManagers();
var timeoutInSeconds = 60;
SSLParameters sslParams = new SSLParameters();
sslParams.setEndpointIdentificationAlgorithm("");
SSLContext sc = SSLContext.getInstance("SSL");
//取消主机名验证
System.setProperty("jdk.internal.httpclient.disableHostnameVerification", "true");
sc.init(null, trustManagers, new SecureRandom());
return HttpClient.newBuilder()
.connectTimeout(Duration.ofMillis(timeoutInSeconds * 1000))
.sslContext(sc)
.sslParameters(sslParams)
.followRedirects(HttpClient.Redirect.NEVER)
.version(HttpClient.Version.HTTP_2)
.build();
}
}3.发送请求工具类
package cn.wja.util;
import cn.wja.component.MyHttpClient;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import static java.nio.charset.StandardCharsets.UTF_8;
public class HttpUtils {
public static HttpResponse sendGet(String urlStr, String cookieStr) throws Exception {
HashMap hashMap = new HashMap<>();
hashMap.put("Cookie",cookieStr);
return sendGet(urlStr,hashMap);
}
public static HttpResponse sendGet(String urlStr, Map headers) throws KeyManagementException, NoSuchAlgorithmException, IOException, InterruptedException {
HttpClient client = MyHttpClient.getClient();
HttpRequest.Builder reqBuilder = getReqBuilder(urlStr);
reqBuilder.GET();
for (String key:headers.keySet()){
reqBuilder.header(key, headers.get(key));
}
HttpRequest request = reqBuilder.build();
HttpResponse result = client.send(request, HttpResponse.BodyHandlers.ofString(UTF_8));
return result;
}
private static HttpResponse sendPost(String contentType, String urlStr, String bodyStr, String cookieStr) throws Exception {
HttpClient client = MyHttpClient.getClient();
HttpRequest.Builder reqBuilder = getReqBuilder(urlStr);
HttpRequest.BodyPublisher bodyPublisher = HttpRequest.BodyPublishers.ofString(bodyStr);
reqBuilder.header("Content-Type", contentType)
.POST(bodyPublisher)
.header("Cookie", cookieStr);
HttpRequest request = reqBuilder.build();
HttpResponse result = client.send(request, HttpResponse.BodyHandlers.ofString(UTF_8));
return result;
}
public static HttpResponse sendFormPost(String urlStr, String formStr, String cookieStr) throws Exception {
return sendPost("application/x-www-form-urlencoded;charset=utf-8", urlStr, formStr, cookieStr);
}
public static HttpResponse sendJsonPost(String urlStr, String jsonStr, String cookieStr) throws Exception {
return sendPost("application/json;charset=utf-8", urlStr, jsonStr, cookieStr);
}
public static HttpRequest.Builder getReqBuilder(String urlStr) {
return HttpRequest.newBuilder()
.uri(URI.create(urlStr))
.header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:96.0) Gecko/20100101 Firefox/96.0");
}
} 4.测试

测试表明,通过调用工具类方法,可以直接发送GET请求和带Form表单/Json的POST请求。如果您要发送其他形式的HTTP请求,也可以参照上述代码自行实现。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。
赤友清理大师是一款为 Mac 设计的智能清理优化工具,可精准扫描垃圾、大文件、重复文件等,释放磁盘空间。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。














