Java原生HttpClient怎么使用
发表于:2025-02-08 作者:千家信息网编辑
千家信息网最后更新 2025年02月08日,这篇文章主要介绍"Java原生HttpClient怎么使用"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"Java原生HttpClient怎么使用"文章能帮助大
千家信息网最后更新 2025年02月08日Java原生HttpClient怎么使用
这篇文章主要介绍"Java原生HttpClient怎么使用"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"Java原生HttpClient怎么使用"文章能帮助大家解决问题。
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 HttpResponsesendGet(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请求,也可以参照上述代码自行实现。
关于"Java原生HttpClient怎么使用"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。
知识
工具
方法
行业
测试
不同
实用
主机
代码
内容
实用性
实际
形式
文章
更多
案例
知识点
篇文章
表单
证书
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发工具名称
临沂戴尔服务器经销商
什么人做软件开发最好
服务器硬盘报foreign
网络安全培训的有效性
警院的网络安全专业
广德先进软件开发服务价格大全
报考网络安全保卫大队理由
正规的存储服务器测评
数据库排序语句
公司自己搭建服务器划算
河南浩天网络技术有限公司
免费 vod服务器软件
oracle数据库提交的事务
服务器阵列异常
kafka消费海量数据库
服务器管理mac地址
20个串口的服务器
网络安全及防诈骗宣传视频
个人服务器怎么买
aceess数据库编程
安防监控需要连接服务器吗
服务器 无法访问
中专软件开发学什么课程
湖北省大学生网络安全大赛
通县租房软件开发
外网网络安全短视频
ce读取不了数据库
电子支付及其网络安全研究
软件开发的就业趋势