当前位置: 首页 > news >正文

HttpClient请求Https证书问题解决

本地使用HttpClient请求https时没有问题,但是放到服务器上,运行出现报错,出现异常为:

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

通过查阅网上资料,将解决方案整如下:

1.通过在服务器端安装证书

步骤:
1.现在指定的https链接下载证书,保存为.cer文件
2.双击.cer文件安装即可

但是,在按照以上步骤使用时,还是会出现异常,这里又通过查阅资料,了解到java的jdk用于自己的证书库,在使用时,需要将证书安装到jdk默认的证书库中,这里步骤大致如下:
1.进入jdk–>jre–>lib–>security目录下
2.cmd,并执行以下命令

keytool -import -alias kdcert -file E:\cert\kd.cert.cer -keystore cacerts -trustcacerts

alias :证书别名,用于查询证书
file :证书所在路径
-keystore cacerts -trustcacerts:固定写法

这种方法原则上是可行的,但是由于我的服务器不能装JDK环境,只能通过指定jre的方式运行jar包,而通过这种方式必须制定到jdk安装目录,这种方式因此也不考虑了

2.在代码段添加信任所有证书

这里采用在发送https请求前,对https证书进行全部信任,代码如下,亲测有效。

package com.focusmedis.FIM.communication;import com.focusmedis.FIM.utils.JsonUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.ssl.SSLContextBuilder;
import org.apache.http.util.EntityUtils;
import org.apache.ibatis.mapping.ResultMap;
import org.springframework.stereotype.Service;import javax.net.ssl.SSLContext;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;@Service
public class HttpSend {private static CloseableHttpClient httpClient;/*** 信任SSL证书*/static {try {SSLContext sslContext = SSLContextBuilder.create().useProtocol(SSLConnectionSocketFactory.SSL).loadTrustMaterial((x, y) -> true).build();RequestConfig config = RequestConfig.custom().setConnectTimeout(5000).setSocketTimeout(5000).build();httpClient = HttpClientBuilder.create().setDefaultRequestConfig(config).setSSLContext(sslContext).setSSLHostnameVerifier((x, y) -> true).build();} catch (Exception e) {e.printStackTrace();}}/*** post请求* @param url* @param params* @return*/public static String doPost(String url, Map<String, String> params) {if (StringUtils.isBlank(url)) {return null;}try {List<NameValuePair> pairs = null;if (params != null && !params.isEmpty()) {pairs = new ArrayList<>(params.size());for (Map.Entry<String, String> entry : params.entrySet()) {String value = entry.getValue();if (value != null) {pairs.add(new BasicNameValuePair(entry.getKey(), value));}}}HttpPost httpPost = new HttpPost(url);if (pairs != null && pairs.size() > 0) {httpPost.setEntity(new UrlEncodedFormEntity(pairs, "utf-8"));}CloseableHttpResponse response = httpClient.execute(httpPost);int statusCode = response.getStatusLine().getStatusCode();if (statusCode != 200) {httpPost.abort();throw new RuntimeException("HttpClient is error status code :"+ statusCode);}HttpEntity entity = response.getEntity();String result = null;if (entity != null) {result = EntityUtils.toString(entity, "utf-8");}EntityUtils.consume(entity);response.close();return result;} catch (Exception e) {e.printStackTrace();}return null;}/*** post请求 发送json格式的报文 StringEntity* @param url* @param jsonString* @return*/public static Map<String,Object> doPost(String url, String jsonString) {Map<String,Object> resultMap = new HashMap<>();if (StringUtils.isBlank(url)) {return null;}try {HttpPost httpPost = new HttpPost(url);StringEntity stringEntity = new StringEntity(jsonString, "utf-8");stringEntity.setContentType("application/json");httpPost.setEntity(stringEntity);//这里新增对进得请求头的判断Map<String, Object> datamap = JsonUtils.JsonToMapObj(jsonString);if (datamap.containsKey("api")) {String api = (String) datamap.get("api");httpPost.setHeader("api", api);}if (datamap.containsKey("accessTokenStr")) {String accessTokenStr = (String) datamap.get("accessTokenStr");httpPost.setHeader("accessToken", accessTokenStr);}CloseableHttpResponse response = httpClient.execute(httpPost);int statusCode = response.getStatusLine().getStatusCode();if (statusCode != 200) {httpPost.abort();throw new RuntimeException("HttpClient is error status code :"+ statusCode);}HttpEntity entity = response.getEntity();String result = null;if (entity != null) {result = EntityUtils.toString(entity, "utf-8");resultMap.put("statuscode", Integer.toString(statusCode));resultMap.put("conResult",result);}EntityUtils.consume(entity);response.close();return resultMap;} catch (Exception e) {e.printStackTrace();}return null;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-3042.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

STM32CubMx自学笔记(一)-LED灯翻转

STM32CubMX自学笔记&#xff08;一&#xff09;---LED灯翻转工程创建系统具体配置工程代码编写下载验证结语工程创建 首先得安装STM32CubMx软件。具体安装步骤参照 保姆级安装步骤&#xff0c;这里将不再赘述&#xff0c;第一节主要是介绍新工程的创建&#xff0c;首先在桌面打…...

十四、Python第十四课——文件和异常

&#xff08;请先看这篇文章&#xff1a;https://blog.csdn.net/GenuineMonster/article/details/104495419&#xff09; 如果看完这篇博文&#xff0c;你的问题还是没有解决&#xff0c;那么请关注我的公众号&#xff0c;后台发消息给我吧&#xff0c;当天回复&#x…...

Linux下安装sqlite3

文章目录前言安装步骤测试安装成功前言 sqlite3的安装 安装步骤 依次执行以下命令&#xff1a; 1)wget http://www.sqlite.org/sqlite-3.5.6.tar.gz 2)tar -xzvf sqlite-3.5.6.tar.gz 3)cd sqlite-3.5.6 4)./configure 5)make 6)make install测试安装成功 出现红色方框信息…...

拉伯配资6月1日策略

5月回想&#xff1a;在5月份的战略中&#xff0c;我们认为其时胶着的商场可能在5月会有所改动。从实践表现来看&#xff0c;5月下旬商场明显出现了一些活泼做多的信号&#xff0c;商场也选择了向上打破。上证指数上涨超4%&#xff0c;深圳成指上涨近3%。 行情判别&#xff1a;从…...

微信小程序趋势及前景,大厂直通车!

最近看到群里看到一个女生&#xff0c;讲述了她从开始选择Android&#xff0c;经过非常努力的学习和挣扎&#xff0c;然而最后面对当前的环境却不得不放弃。看完以后真的非常替她感觉惋惜&#xff0c;如果早几年入行可能结果会比现在好很多&#xff0c;但可惜&#xff0c;这就是…...

LAMP源码编译安装(Apache,Mysql,PHP,论坛安装详解)

目录前言一.LAMP概述1.LAMP架构2.LAMP组件的主要作用二.Apache httpd服务编译安装1.关闭防火墙&#xff0c;将安装Apache所需软件包传到/opt目录下2.安装环境依赖包3.配置软件模块4.编译及安装5.优化配置文件路径&#xff0c;并把httpd服务的可执行程序文件放入路径环境变量的目…...

[Jetson][转载]jetson上安装pytorch+torchvision教程

1. Jetpack默认已安装opencv、cuda、cudnn&#xff0c;故只需再安装pytorch即可&#xff0c;留意jetson是arm架构&#xff0c;需要下载对应的安装文件加以安装  2. pytorch的安装   查询Jetpack的版本 sudo -H pip3 install jetson-stats jetson_release   pytorch的whl文…...

sort在不同浏览器下执行效果

sort在不同浏览器下执行效果 let arr [{name: zhangsan, age: 40},{name: lisi, age: 20},{name: laowang, age: 50},{name: xiaoli, age: 60},{name: xiaojin, age: 30}, ] arr.sort((a, b) > b.age > a.age);上面这段代码在谷歌浏览器中&#xff0c;是不会进行排序的…...

设计模式导读助记

各个设计模式的详细介绍都已经完成&#xff0c;但是不经常用总会忘&#xff0c;所以我想用 一句话 总结设计模式&#xff0c;思考模式的真正意图&#xff0c;再用 一点提示 来思考代码如何实现 写在前面 我整理的设计模式这一个系列&#xff0c;主要是结合了以下几本书 : 《设…...

RT-Thrad|STM32F103+ESP8266 S01+RT-Thread联网之环境搭建(1/3)

文章目录前言硬件准备百问网STM32F103ESP8266 01SESP8266 介绍ESP8266 01S技术规格参数软件准备下载安装 Keil μVision5Pack Installer安装 ST-Link 驱动获取RT-Thread源码下载安装 RT-Thread env 工具文章列表 RT-Thrad|STM32F103ESP8266 S01RT-Thread联网之环境搭建(1/3)RT…...

Flask初体验

Flask初体验 flask框架是一个微型框架&#xff0c;但是微型框架不代表功能比其他框架少&#xff0c;并且flask的约束也比较少&#xff0c;使用更加方便。Flask安装 pip install flask 废话不多说直接上代码 from flask import Flaskapp Flask(__name__)app.route("/&qu…...

天眼查怎么删除信息_天眼查删除信息的方法介绍

天眼查信息怎么删除 天眼查风险信息怎么清除 天眼查问答信息怎么删除 天眼查法律诉讼信息可以删吗 天涯查上的信息删除怎么操作&#xff0c;天眼查成立于2014年&#xff0c;至今发展迅速&#xff0c;已经帮助了无数的企业和消费者&#xff0c;那么很多企业的天眼查信息有时候需…...

5.Random

用于生产一个随机数 步骤&#xff1a; 1.导包 import java.util.Random; 2.创建对象 Random random new Random();3.获取随机数 int number random.nextInt(10); //随机数的取值范围是[0,10),即大于等于&#xff0c;小于10 上面不能获取到10&#xff0c;若要获取到10&…...

Xxl-Job调度器原理解析

项目解析源码地址&#xff1a;https://gitee.com/lidishan/xxl-job-code-analysisxxl-job版本&#xff1a;2.3.0Xxl-Job分为执行器、调度器。而我们平时的客户端就属于一个执行器&#xff0c;执行器启动的时候会自动注册到调度器上&#xff0c;然后调度器进行远程调度。调度器初…...

51单片机利用锁存器控制数码管显示年月日时分秒

数码管模块中的两片74hc573&#xff0c;一片锁存段码&#xff0c;一片锁存位码&#xff0c;这样才能驱动8位数码管。74hc573是锁存器&#xff0c;用于数码管显示时通常是采用段选、片选共用同一组并口的驱动方式。 驱动数码管需要两个信号&#xff0c;一个是段选信号&#xff…...

webrtc之SVC实现(十)

一、概念 SVC&#xff08;可适性视频编码或可分级视频编码&#xff09;是传统H.264/MPEG-4 AVC编码的延伸&#xff0c;可提升更大的编码弹性&#xff0c;并具有时间可适性&#xff08;Temporal Scalability&#xff09;、空间可适性&#xff08;Spatial Scalability&#xff09…...

LeetCode 数值的整数次方

实现 pow(x, n) &#xff0c;即计算 x 的 n 次幂函数&#xff08;即&#xff0c;xn&#xff09;。不得使用库函数&#xff0c;同时不需要考虑大数问题。 示例 1&#xff1a; 输入&#xff1a;x 2.00000, n 10 输出&#xff1a;1024.00000 示例 2&#xff1a; 输入&#xf…...

python 继承和多态

在已有类的基础上创建新类&#xff0c;这其中的一种做法就是让一个类从另一个类那里将属性和方法直接继承下来&#xff0c;从而减少重复代码的编写。提供继承信息的我们称之为父类&#xff0c;也叫超类或基类&#xff1b;得到继承信息的我们称之为子类&#xff0c;也叫派生类或…...

JAVA 基础学习之 继承与方法覆写

1 继承引入​​​​​​​ 三个类都有重复的代码&#xff0c;可以把这共同的代码抽出去&#xff0c;抽出去放到另外一个类里面&#xff1b;下面的3个类和上面的类需要发生一点关系&#xff08;继承&#xff09;&#xff0c;上面的类叫做 父类&#xff08;超类&#xff0c;基类&…...

个性化个人主页html5模板

介绍&#xff1a; 个性化个人主页html5模板 网盘下载地址&#xff1a; http://kekewl.net/tARDuX5n02U0 图片&#xff1a;...

1200页文档笔记,你值得拥有

前言 在学习Java基础的过程中&#xff0c;泛型绝对算得上是一个比较难理解的知识点&#xff0c;尤其对于初学者而言&#xff0c;而且就算是已经有基础的Java程序员&#xff0c;可能对泛型的理解也不是那么透彻&#xff0c;属于那种看了明白&#xff0c;时间长了就忘的那种&…...

ERROR:connect ETIMEDOUT

解决 npm config set registry https://registry.npm.taobao.org...

Django+MySQL问题 启动server报错

问题&#xff1a; File “D:\Python36\lib\site-packages\django\db\models\query.py”, line 122, in iter for row in compiler.results_iter(): File “D:\Python36\lib\site-packages\django\db\models\sql\compiler.py”, line 828, in results_iter results self.execu…...

PMP中的ITTO

pmp中的ITTO是指 input tool technology output 即输入输出工具技术...

无人机控制算法验证与数据集收集

随着我国低空空域开放步伐的加快以及传感器、自动控制、计算机等技术领域的发展&#xff0c;近几年微小型无人机得到了快速的发展。旋翼无人机作为无人机家族中的重要成员&#xff0c;由于其具有空中悬停、垂直起降、贴地飞行等独特的飞行特性&#xff0c;更是成为国内外大学和…...

02.xshell连不上虚拟机linux的解决办法

虚拟机使用的NAT模式&#xff0c;用Xshell一直连接不上虚拟机上的Linux&#xff0c;最后百度搜索之后&#xff0c;解决步骤如下&#xff1a; 1.在虚拟机里面输入ifconfig&#xff0c;查询虚拟机ip地址 2.打开网络连接&#xff0c;修改VMnet1 IP地址改为与虚拟机同一网段 比如…...

chapter5 关联式容器:hashtable相关

目录1 hashtable1.1 概述1.1.1 线性探测1.1.2 二次探测1.1.3 开链1.2 hashtable的buckets和nodes1.3 hashtable的迭代器1.4 hashtable的数据结构1.5 hashtable的构造与内存管理1.5.1 插入与表格重整1.5.2 判知元素的落脚处&#xff08;bkt_num&#xff09;1.5.3 复制和整体删除…...

vuex使用方法

安装 参考官网&#xff1a;https://vuex.vuejs.org/zh/installation.html vuex的五大核心 state&#xff1a;存放公用数据action&#xff1a;存放异步操作&#xff0c;不能直接修改state中的数据&#xff0c;通过dispatch触发action&#xff0c;action会有两个参数&#xff…...

python加载上一级文件的自定义模块

目录结构如下 -- dir0| file2.py| dir1| __init__.py| file3.py在 file3.py中导入file2.py 在file3.py中新建 __init__.py import sys sys.path.append("..")然后在file3.py中 from ..file2 import xxx即可使用 __init__.py 作用是将文件夹变为一个Python模块 Pyt…...

Centos 6无法使用yum解决办法

12月后Centos 6 系统无法使用yum出现错误(文章底部看) 相信已经有一部分朋友今天连接到CentOS 6的服务器后执行yum后发现报错&#xff0c;那么发生了什么&#xff1f; CentOS 6已经随着2020年11月的结束进入了EOL&#xff08;Reaches End of Life&#xff09;&#xff0c;不过…...

Modelsim使用技巧

我们经常使用quartus与modelsim的进行联合仿真&#xff0c;具体方法看我以前写的博客&#xff08;如下&#xff09;&#xff0c;这里不多阐述 https://blog.csdn.net/qq_42446721/article/details/115287044?spm1001.2014.3001.5501 这里主要介绍modelsim的使用技巧 调试技巧…...

Chapter9.3:线性系统的状态空间分析与综合(下)

此系列属于胡寿松《自动控制原理题海与考研指导》(第三版)习题精选&#xff0c;仅包含部分经典习题&#xff0c;需要完整版习题答案请自行查找&#xff0c;本系列属于知识点巩固部分&#xff0c;搭配如下几个系列进行学习&#xff0c;可用于期末考试和考研复习。 自动控制原理(…...

数理统计之 置信区间(置信度)

目录&#xff1a; 双侧置信区间 单侧置信区间 精确度 一 双侧置信区间 总体X的分布函数, 未知&#xff0c;对于给定的 如果 称为的置信水平为的双侧置信区间。 : 置信下限 : 置信上限 二 单侧置信区间 : 为置信水平为的单侧置信下限 &#xff1a; 为置信水平为的单…...

我国天宫空间站以及各个仓位介绍

一、天宫空间站 天宫空间站&#xff08;China Space Station&#xff09;是中国从2021年开始建设的一个模块化空间站系统&#xff0c;为人类自1986年的和平号空间站及1998年的国际空间站后所建造的第三座大型在轨空间实验平台&#xff0c;基本构型由天和核心舱、问天实验舱和梦…...

AB实验的置信区间 (confidence interval)

点估计与区间估计&#xff1a; 点估计&#xff1a;用样本统计量来估计总体参数。估计虽然给出了未知参数的估计值&#xff0c;但是未给出估计值的可靠程度&#xff0c;即估计值偏离未知参数真实值的程度。区间估计&#xff1a;给定置信水平&#xff0c;根据估计值确定真实值可…...

威尔逊置信区间 php,威尔逊置信区间

由于正态区间对于小样本并不可靠&#xff0c;因而&#xff0c;1927年&#xff0c;美国数学家 Edwin Bidwell Wilson提出了一个修正公式&#xff0c;被称为“威尔逊区间”&#xff0c;很好地解决了小样本的准确性问题。根据离散型随机变量的均值和方差定义&#xff1a;μE(X)0*(…...

统计基础(七)置信区间

confidence intervals1.基本概念1.1 统计推断 statistical inferences1.2 估计量和估计1.3进行统计推断所需估计器的随机3个主要元素2.参数估计2.1 点估计 Point Estimation2.2 区间估计 Interval Estimation2.3 术语3.置信区间3.1 z-interval3.2 t interval3.3 p的的z区间:4.D…...

置信系数 表达了置信区间的计算_2.4 多元回归中的假设检验和置信区间

第一节是一元回归统计推断在多元回归中的推广&#xff0c;主要针对的是单个系数的假设检验和置信区间&#xff0c;除了在假设阶段有所不同&#xff08;比如是在固定其他变量的情况下&#xff0c;被检验变量对因变量没有影响&#xff09;&#xff0c;基本步骤是一样的&#xff0…...

R语言求单侧置信区间或双侧置信区间

最近工作中用到了区间估计&#xff0c;将自己程序中用到的方法整理如下&#xff0c;仅供参考~interval_estimated <- function(x, sigma-1, side0, alpha0.05){n <- length(x); xb <- mean(x)if (sigma > 0){if (side < 0){tmp <- sigma/sqrt(n)*qnorm(1-alp…...

最近的网络热点

1、北大法学院院长朱苏力和博士考生甘德怀的招生纠纷&#xff0c;导致对博士招生黑幕的大讨论。2、博客中国的一篇有关北京学生考清华北大&#xff0c;录取分数线大大低于其它省市的文章导致对于北京人和外地人素质高低的大讨论。3、赵忠祥和他的女医生打官司&#xff0c;网上赫…...

朱苏力甘德怀_甘德洛伊(Gunderloy)是个怪胎

朱苏力甘德怀The Daily Grind 47. Ah, the nectarine tree is in bloom, the asparagus is pushing up (yum!), and it didnt get below freezing last night. Its days like this that I remember exactly why it is that I retired from the flying-around-the-country-and-c…...

地区选择三级联动

html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Document</title><script src"area.js"></script> </head> <body><select name"" id&qu...

学习网站大全

算法 可视化算法网站 中文 可视化算法中文网址 可视化算法英文网址...

三维地质建模数据处理

三维地质建模计算在地质工程、地球物理、矿产勘查等领域获得了广泛的应用&#xff0c;常用软件包括GOCAD、Surpac、XModel、DMine等。通过三维地质建模&#xff0c;既可以表达空间几何对象&#xff0c;也可以表现空间属性分布&#xff0c;进而实现地下三维空间可视化、地质解释…...

知乎搜集的学习资源网站大全

第一弹&#xff1a;超全Python学习资源整理&#xff08;入门系列&#xff09;第二弹&#xff1a;超全Python学习资源整理&#xff08;进阶系列&#xff09;Java进阶之设计模式Scala 开发教程Hadoop部署及管理RabbitMQ 消息队列Redis基础教程Shell脚本实现打字游戏Python3 实现色…...

在线学习网站大全(推荐)

没准啥时候想看了呢&#xff0c;先存着^_^ http://mp.weixin.qq.com/s?src3&timestamp1462706975&ver1&signature0XYN9OIZ-Paw0ulxboaIytemTZnPeiIlsKOwFThUwGCU6EfPvt6MjdwwYlgGHbgY7UwIzPjR-bbXtf1sCQgsr1E-fUDbrMa8P9sv4ubguuUc2xhxSiXmfghyEI8s9FmJJcpx-FkmR…...

oh-my-zsh 为 ls 命令自定义颜色

ls 命令默认显示的颜色是&#xff1a; 白色&#xff1a; 表示普通文件 蓝色&#xff1a; 表示目录 绿色&#xff1a; 表示可执行文件 红色&#xff1a; 表示压缩文件 蓝绿色&#xff1a; 链接文件 红色闪烁&#xff1a;表示链接的文件有问题 黄色&#xff1a; 表示设备文件 灰…...

新手自述

作为自己的第一篇博客&#xff0c;简单的介绍一下自己&#xff0c;本人赵文娟&#xff0c;学号1425052036&#xff0c;南通大学的信管142的一名将要毕业的大四的学生&#xff0c;要说兴趣爱好&#xff0c;没什么特别的&#xff0c;就是的宅&#xff0c;喜欢看电视剧&#xff0c…...

南通大学教务管理微信公众号的用户体验

这个学校的教务系统用了三年&#xff0c;起初用的时候的原因是这样查成绩非常方便&#xff0c;不像上网那样要输用户名、密码和验证码&#xff0c;特别在手机上网去查时&#xff0c;一直容易验证码输错&#xff0c;有时来重复输个两三次才行。 不过自从用上了这种微信查询的方法…...

IT男的真实人生:总被误认为是修电脑的

在互联网和信息化高唱主旋律的时代&#xff0c;IT行业成为当之无愧的朝阳产业&#xff0c;这个行业的从业者可谓时代宠儿。他们智商高、年纪轻&#xff0c;在技术的海洋里自由驰骋&#xff0c;却与社会保持着一定的距离。熬夜加班的技术控、宅男、“码农”……透过这些神秘的色…...