Java原生HttpClient怎么使用
发表于:2024-11-15 作者:千家信息网编辑
千家信息网最后更新 2024年11月15日,这篇文章主要介绍"Java原生HttpClient怎么使用"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"Java原生HttpClient怎么使用"文章能帮助大
千家信息网最后更新 2024年11月15日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安全错误
数据库的锁怎样保障安全
怎么修改数据库中数据的唯一性
sql数据库工作时用的多么
计算机3级网络技术证书
网络安全审查制度有什么意义
学习unity数据库学哪个
销售网络安全整机厂家
风豹互联网科技
网络安全方向硕士
世界最大化妆品数据库
物理服务器和云服务器的价格
安徽名优网络技术服务联系人
珠海电脑软件开发公司
一般服务器寿命
电脑有网络软件连接服务器失败
网络安全宣传视频贵州
塞罕区委网络安全和信息化委员会
广告竞价软件开发
时钟授时管理服务器
中软国际软件开发培训怎么样
web服务器的安全方案
接服务器硬盘
服务器如何看是几u的
数据库密码应设什么类型
服务器硬盘容易坏吗
北邮网络安全研究生分数
提高国民网络安全意识
给我查一下上海的服务器厂家
网络安全迪肯
初中生网络安全教育橱窗图片
保证数据库安全和备份的文件