千家信息网

java怎么发送https请求

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本篇内容介绍了"java怎么发送https请求"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!后端发送
千家信息网最后更新 2026年10月31日java怎么发送https请求

本篇内容介绍了"java怎么发送https请求"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

后端发送http请求需要的代码环境

需要两个jar包,httpclient 和 httpcore。

PS:最好两个jar包的版本要一致,并且要保证本地没有同类名称的jar包,否则jar包冲突可可以会报"java.lang.NoClassDefFoundError:org/apache/http/impl/client/HttpClients "这种class找不到的错误!本人就遇到这种错误,最后把相同的jar包全删掉只保留一份(即便jar没有build path进去也要删掉)。

https请求忽略证书发送

https协议比http安全性更高少量,具体原理如下:

用户端在用HTTPS方式与Web服务器通信时有以下几个步骤

(1)用户用https的URL访问Web服务器,要求与Web服务器建立SSL连接。

(2)Web服务器收到用户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给用户端。

(3)用户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。

(4)用户端的浏览器根据双方同意的安全等级,建立会话密钥,而后利使用网站的公钥将会话密钥加密,并传送给网站。

(5)Web服务器利使用自己的私钥解密出会话密钥。

(6)Web服务器利使用会话密钥加密与用户端之间的通信。

因而需要安全证书,当然通过java代码方式能实现忽略证书的方式进行请求。

假如不在代码中添加忽略证书的特殊解决,一般会直接抛出如下异常报错:

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

即为提醒要发送证书才可以正常请求服务。

如下代码功可以就是忽略证书:

//https 请求忽略证书

SSLContextBuilder builder = new SSLContextBuilder();

builder.loadTrustMaterial(null, new TrustSelfSignedStrategy());

SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(builder.build(), NoopHostnameVerifier.INSTANCE);

Registry registry = RegistryBuilder.create()

.register("http", new PlainConnectionSocketFactory())

.register("https", sslConnectionSocketFactory)

.build();

PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(registry);

cm.setMaxTotal(100);

CloseableHttpClient httpClient = HttpClients.custom()

.setSSLSocketFactory(sslConnectionSocketFactory)

.setConnectionManager(cm)

.build();

注意:上面的httpClient就是包装好的忽略证书的http请求实例对象,到时候直接使用这个对象发请求。


完整代码

try {

//https 请求忽略证书

SSLContextBuilder builder = new SSLContextBuilder();

builder.loadTrustMaterial(null, new TrustSelfSignedStrategy());

SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(builder.build(), NoopHostnameVerifier.INSTANCE);

Registry registry = RegistryBuilder.create()

.register("http", new PlainConnectionSocketFactory())

.register("https", sslConnectionSocketFactory)

.build();

PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(registry);

cm.setMaxTotal(100);

CloseableHttpClient httpClient = HttpClients.custom()

.setSSLSocketFactory(sslConnectionSocketFactory)

.setConnectionManager(cm)

.build();

//将使用户信息同步到第三方系统中

String url="https://xx.xx.xx.xx:1001/bomp/sync/execute";

//发送post请求

HttpPost method = new HttpPost(url);

//准备json数据发送参数

JSONObject paramIn = new JSONObject();

paramIn.put("app_id", "B39900002");

paramIn.put("secret_key", "ea703f2a02ae48b5b269ab43607275fe");

//构造内层json对象

JSONArray account_list = new JSONArray();

JSONObject account_list_obj = new JSONObject();

account_list_obj.put("account", pojo.get("loginId"));

account_list_obj.put("eip_account", "");

account_list_obj.put("name", pojo.get("loginName"));

account_list_obj.put("phone", pojo.get("mobile"));

account_list_obj.put("password", "");

account_list_obj.put("status", 1);

account_list_obj.put("roles", "");

account_list.add(account_list_obj);

paramIn.put("account_list", account_list);

//处理中文乱码问题

StringEntity entity = new StringEntity(paramIn.toString(),"utf-8");

entity.setContentEncoding("UTF-8");

entity.setContentType("application/json");

method.setEntity(entity);

//发送请求

HttpResponse result = httpClient.execute(method);

//请求结束,返回结果

String resData = EntityUtils.toString(result.getEntity());

System.out.println("RENWOXING result:"+resData);

//得到返回结果的j'son格式

JSONObject resJson = JSONObject.fromObject(resData);

} catch (UnsupportedEncodingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (org.apache.http.ParseException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}catch(Exception e){

e.printStackTrace();

}

"java怎么发送https请求"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

证书 用户 服务 服务器 代码 安全 密钥 用户端 网站 信息 对象 方式 等级 加密 两个 公钥 内容 就是 更多 浏览器 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广东万易互联网科技有限公司惠州分公司 科技互联网项目 科技企业和互联网企业 互联网科技的发展 高科技与互联网 齐家互联网科技 凡科互联网科技 长亮科技 互联网金融 互联网科技博客 四川狮子座互联网科技 美国互联网前沿科技 科技伦理 互联网公司 科技大学互联网专业好不好 河南猎农互联网科技有限公司 科技互联网的核心竞争力 黑科技 体验场景 互联网大会 领航科技大厦互联网公司 富国互联网金融科技混合基金 易企秀互联网科技是做什么的 第三届互联网大会安防黑科技 广东万易互联网科技有限公司惠州分公司 中国互联网科技发展 九亚互联网科技 善班互联网科技有限公司 剑昆互联网络科技有限公司临桂 朱啸虎曾投资哪些互联网科技企业 九思连强互联网电子科技有限公司 信承诺互联网科技有限公司 西安有哪些互联网高科技企业 互联网科技对化妆品行业
0