javax.net.ssl.SSLHandshakeException

2023-11-15

点击打开链接

以下是网上搜到的解决方案,在初始化httpclient实例前加上两行:


  1. ProtocolSocketFactory fcty = new MySecureProtocolSocketFactory();  
  2. Protocol.registerProtocol("https"new Protocol("https", fcty, 443));  
  3. httpClient = new HttpClient(); 



  1. package com.jingshou;  
  2.   
  3. import java.io.IOException;  
  4. import java.net.InetAddress;  
  5. import java.net.Socket;  
  6. import java.net.UnknownHostException;  
  7.   
  8. import javax.net.ssl.SSLContext;  
  9. import javax.net.ssl.TrustManager;  
  10.   
  11. import org.apache.commons.httpclient.ConnectTimeoutException;  
  12. import org.apache.commons.httpclient.HttpClientError;  
  13. import org.apache.commons.httpclient.params.HttpConnectionParams;  
  14. import org.apache.commons.httpclient.protocol.ControllerThreadSocketFactory;  
  15. import org.apache.commons.httpclient.protocol.SecureProtocolSocketFactory;  
  16.   
  17. public class MySecureProtocolSocketFactory implements  
  18.         SecureProtocolSocketFactory {  
  19.   
  20.     private SSLContext sslContext = null;  
  21.   
  22.     /** 
  23.      * Constructor for MySecureProtocolSocketFactory. 
  24.      */  
  25.     public MySecureProtocolSocketFactory() {  
  26.     }  
  27.   
  28.     /** 
  29.      *  
  30.      * @return 
  31.      */  
  32.     private static SSLContext createEasySSLContext() {  
  33.         try {  
  34.             SSLContext context = SSLContext.getInstance("SSL");  
  35.             context.init(nullnew TrustManager[] { new MyX509TrustManager() },  
  36.                     null);  
  37.             return context;  
  38.         } catch (Exception e) {  
  39.             throw new HttpClientError(e.toString());  
  40.         }  
  41.     }  
  42.   
  43.     /** 
  44.      *  
  45.      * @return 
  46.      */  
  47.     private SSLContext getSSLContext() {  
  48.         if (this.sslContext == null) {  
  49.             this.sslContext = createEasySSLContext();  
  50.         }  
  51.         return this.sslContext;  
  52.     }  
  53.   
  54.     /* 
  55.      * (non-Javadoc) 
  56.      *  
  57.      * @see org.apache.commons.httpclient.protocol.ProtocolSocketFactory#createSocket(java.lang.String, 
  58.      *      int, java.net.InetAddress, int) 
  59.      */  
  60.     public Socket createSocket(String host, int port, InetAddress clientHost,  
  61.             int clientPort) throws IOException, UnknownHostException {  
  62.   
  63.         return getSSLContext().getSocketFactory().createSocket(host, port,  
  64.                 clientHost, clientPort);  
  65.     }  
  66.   
  67.     /* 
  68.      * (non-Javadoc) 
  69.      *  
  70.      * @see org.apache.commons.httpclient.protocol.ProtocolSocketFactory#createSocket(java.lang.String, 
  71.      *      int, java.net.InetAddress, int, 
  72.      *      org.apache.commons.httpclient.params.HttpConnectionParams) 
  73.      */  
  74.     public Socket createSocket(final String host, final int port,  
  75.             final InetAddress localAddress, final int localPort,  
  76.             final HttpConnectionParams params) throws IOException,  
  77.             UnknownHostException, ConnectTimeoutException {  
  78.         if (params == null) {  
  79.             throw new IllegalArgumentException("Parameters may not be null");  
  80.         }  
  81.         int timeout = params.getConnectionTimeout();  
  82.         if (timeout == 0) {  
  83.             return createSocket(host, port, localAddress, localPort);  
  84.         } else {              
  85.             return ControllerThreadSocketFactory.createSocket(this, host, port,  
  86.                     localAddress, localPort, timeout);  
  87.         }  
  88.     }  
  89.   
  90.     /* 
  91.      * (non-Javadoc) 
  92.      *  
  93.      * @see SecureProtocolSocketFactory#createSocket(java.lang.String,int) 
  94.      */  
  95.     public Socket createSocket(String host, int port) throws IOException,  
  96.             UnknownHostException {  
  97.         return getSSLContext().getSocketFactory().createSocket(host, port);  
  98.     }  
  99.   
  100.     /* 
  101.      * (non-Javadoc) 
  102.      *  
  103.      * @see SecureProtocolSocketFactory#createSocket(java.net.Socket,java.lang.String,int,boolean) 
  104.      */  
  105.     public Socket createSocket(Socket socket, String host, int port,  
  106.             boolean autoClose) throws IOException, UnknownHostException {  
  107.         return getSSLContext().getSocketFactory().createSocket(socket, host,  
  108.                 port, autoClose);  
  109.     }  

MyX509TrustManager类:
  1. package com.jingshou;  
  2.   
  3. import java.security.cert.CertificateException;  
  4. import java.security.cert.X509Certificate;  
  5.   
  6. import javax.net.ssl.X509TrustManager;  
  7.   
  8. public class MyX509TrustManager implements X509TrustManager {  
  9.   
  10.     /* (non-Javadoc) 
  11.      * @see javax.net.ssl.X509TrustManager#checkClientTrusted(java.security.cert.X509Certificate[], java.lang.String) 
  12.      */  
  13.     public void checkClientTrusted(X509Certificate[] arg0, String arg1)  
  14.         throws CertificateException {  
  15.   
  16.     }  
  17.   
  18.     /* (non-Javadoc) 
  19.      * @see javax.net.ssl.X509TrustManager#checkServerTrusted(java.security.cert.X509Certificate[], java.lang.String) 
  20.      */  
  21.     public void checkServerTrusted(X509Certificate[] arg0, String arg1)  
  22.         throws CertificateException {  
  23.   
  24.     }  
  25.   
  26.     /* (non-Javadoc) 
  27.      * @see javax.net.ssl.X509TrustManager#getAcceptedIssuers() 
  28.      */  
  29.     public X509Certificate[] getAcceptedIssuers() {  
  30.         return null;  
  31.     }  
  32.   


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

javax.net.ssl.SSLHandshakeException 的相关文章

  • Android WebView 在开发过程中有哪些坑?

    https www zhihu com question 31316646 作者 李明亮 链接 https www zhihu com question 31316646 answer 52714778 来源 知乎 著作权归作者所有 转载请
  • android开发使用 ndk-stack 打印崩溃日志

    使用 ndk stack 的时候需要你的 lib 编译为 debug 版 通常需要下面的修改 1 修改 android mk 增加 为 LOCAL CFLAGS 增加 g 选项 2 修改 application mk 增加 APP OPTI
  • ES7.5.2 script_score查询的bug

    背景 1 需要用到dense vector script score来进行算分 排序 2 ES版本为7 5 2 用到了自定义的插件 短期无法升级到7 17 5 或更高版本 3 script score查询在加入date类型的字段作为查询条件
  • MybatisPlus整合Flowable出现的坑

    MybatisPlus整合Flowable出现的坑 摘要 现在在项目中使用的MybatisPlus 最近研究了一下流程框架Flowable 看了很多技术文档博客 打算直接整合进去 先记录一下遇到的问题 问题 Description file
  • 异常数据剔除

    1 在SPSS中做箱型图 图中可以显示异常值 然后剔除 但问题是大数据 采用箱形图已经不显示了 2 拉依达准则法 3 简单 无需查表 测量次数较多或要求不高时用 是最常用的异常值判定与剔除准则 但当测量次数 10次时 该准则失效 如果实验数
  • Keil转到Eclipse遇到的几个问题

    ARM下Keil转到Eclipse后的几个问题 Keil转战到Eclipse下 首先 Eclipse的交叉工具链的环境要进行设置 其次 在Keil中的Scatter file在Eclipse下要重新编写 最后 Eclipse的调试环境要进行
  • spring JDBCTemplate 批量插入 返回id 批量插入返回批量id

    http www iteye com topic 1135650 1 插入一条记录返回刚插入记录的id Java代码 public int addBean final Bean b final String strSql insert in
  • Java中异常问题(异常抛出后是否继续执行的问题)

    public static void test throws Exception throw new Exception 参数越界 System out println 异常后 编译错误 无法访问的语句 代码2 异常被捕获 日志打印了异常
  • Android_异常大全

    java lang NullPointerException 这个异常的解释是 程序遇上了空指针 简单地说就是调用了未经初始化的对象或者是不存在的对象 这个错误经常出现在创建图片 调用数组这些操作中 比如图片未经初始化 或者图片创建时的路径
  • 多线程异常 和 事务(一)

    1 首先提出几个问题 1 1 子线程中的异常在主线程中是否可以catch 1 2 在spring中主线程有事务 那么子线程中有事务码 2 先看第一个问题 2 1 我们在main方法里面测试 代码如下 package com pingan t
  • Java中的运行时异常

    Throwable 是所有 Java 程序中错误处理的父类 有两种子类 Error 和 Exception Error 表示由 JVM 所侦测到的无法预期的错误 由于这是属于 JVM 层次的严重错误 导致 JVM 无法继续执行 因此 这是不
  • BeanCreationException异常,注入Bean异常

    org springframework beans factory BeanCreationException Error creating bean with name XXX 注入bean异常 出现这个异常就是找不到对应的JavaBea
  • Cannot download sources Sources not found for 问题解决方案

    idea下载文件源码时报Cannot download sources Sources not found for org apache tomcat embed tomcat embed core 8 5 32 错误 解决方案 在mave
  • meidaPlayer java.io.IOException: setDataSource failed.: status=0x800000

    1 权限
  • Flutter json_serializable

    1 添加项目依赖 dev dependencies flutter test sdk flutter build runner 1 1 3 json serializable 3 2 0 2 创建实体类 可以使用json serializa
  • ARM 异常介绍

    一 中断概念 CPU 在执行当前程序的过程中因硬件或软件的原因插入了另一段程序运行的过程 硬件引起的中断不可预测 随机性 软中断 事先在程序中安排特殊指令 CPU 执行到该类指令时 转去执行相应的一段预先安排好的程序 然后再返回来执行原来的
  • 常见异常【一】TooManyResultsException

    org apache ibatis exceptions TooManyResultsException Expected one result or null to be returned by selectOne but found 1
  • 多线程的一些小问题集锦

    1 线程死亡之后不能再次启动 测试线程是否已经死亡 可以调用isAlive 方法 当线程处于就绪 运行 阻塞三种状态时 返回true 当线程处于死亡 新建状态时返回false 实例代码如下 package com thread public
  • sudo pip install -i https://pypi.douban.com/simple --user MySQL-python报错‘my_config.h‘ file not found

    异常 Google了无数次 都没用 后面无意之间看到了一篇博客 https www codenong com cs107125972 按照他的方式改了 但是没有用 仔细检查异常报错后 到了client的目录 copy了一个文件之后可以了
  • 链接数据库 报错java.sql.SQLException: Unsupported character encoding ‘utf-8......

    项目启动报如下错误信息 java sql SQLException Unsupported character encoding utf 8 serverTimezone 分析 由 java sql SQLException 可知道很大概率

随机推荐

  • C++ 并行编程(thread)---多线程

    C 并行编程 多线程 1 并发与并行 2 进程和线程 2 1 常规解释 2 2 总结 2 3 具体理解 2 4 为什么使用多线程 2 5 进程和线程的区别 3 C 中的多线程 3 1 存储持续性 补充 4 从头文件
  • CSDN竞赛52期总结

    1 题目名称 投篮 小明投篮 罚球线投球可得一分 在三分线内投篮得分可以得到2分 在三分线以外的地方投篮得分可以得到3分 连续投 进得分累计 一旦有一个球没投进则得分清零 重新计算 现给出所有得分记录 清零不计入得分 请你计算一下小明 最多
  • gitlab仓库更换地址后pull、push无效,怎么办?轻松解决;

    你有没有遇到一个情况 公司说自己的git地址发生变化 你觉得没有什么 但是当下班时候 我们要提交代码了 发现push不了了 下边我们就解释一下这个事情 第一 原因 因为原来你的clone地址是老的地址 现在是新的地址 所以发生错误 第二 解
  • 服务器和操作系统怎么看,服务器和操作系统怎么看

    服务器和操作系统怎么看 内容精选 换一换 您需要提前准备好符合条件的镜像文件 并了解操作系统的已知问题 参见已知问题 表1中 文件系统 网络 驱动相关的配置需要在虚拟机内部完成 强烈建议您在原平台的虚拟机实施修改后 再导出镜像文件 当然 您
  • 淘宝联盟(淘客)/京东联盟(京东客)/拼多多(多多客)常用接口整理

    一 淘宝客常用接口整理 1 商品ID高佣转链API 描述 通过商品ID进行高佣链接 生成带优惠券的二合一最高佣金的链接 如该商品没有优惠券 则除了生成二合一链接外 还会生成该商品的淘客链接 同样为最高佣金 接口地址 http open 21
  • steam教育文化传承的必要性

    建构主义认为 学习者需要借助文化知识参与到一个群体当中去学习相关知识和技能 学习的过程离不开文化的参与 而知识的学习和技能的掌握依靠的也不仅仅是学习个体与外在环境之间的相互作用 还需要文化的参与 传统文化传承是文化因素 集体智慧在某一共同体
  • 7.19黄金连续砸盘上涨还会跌吗?空单被套怎么办?

    近期有哪些消息面影响黄金走势 今日黄金多空该如何研判 黄金消息面解析 周三 7月19日 亚市盘中 现货黄金高位震荡 目前交投于1976美元 盎司附近 因隔夜美gu大涨打压避险情绪 但金价仍守住了隔夜大部分涨幅 周二金价强势上涨近30美元 顶
  • Vue的简单使用

    第一个Vue程序 1 导入开发版本Vue js 2 使用简洁的模板语法把数据渲染到页面上 的作用是和下面的数据联系起来 div message div 3 创建Vue实例对象 设置el属性和data属性 var app new Vue el
  • java 验证码识别demo

    pom依赖坐标
  • 1222. 可以攻击国王的皇后

    文章目录 Tag 题目来源 题目解读 解题思路 方法一 从白国王出发 方法二 从黑皇后出发 写在最后 Tag 模拟 数组 题目来源 1222 可以攻击国王的皇后 题目解读 在一个 8 8 8 times 8 8 8 的棋盘上 有若干个
  • elasticsearch 简介和创建索引初步

    简介 ElasticSearch是一个开源的分布式搜索引擎 具备高可靠性 支持非常多的企业级搜索用例 像Solr4一样 是基于Lucene构建的 支持时间时间索引和全文检索 官网 http www elasticsearch org 它对外
  • lssvm实例

    clc clear close all 产生训练样本 xn train1 1 2 200 训练样本 每一列为一个样本 xn train2 1 1 100 dn train1 xn train1 2 xn train2 训练目标 行向量 dn
  • 2022产业区块链年度峰会暨FISCO BCOS五周年生态大会

    作为深圳国际金融科技节系列活动之一 由深圳市地方金融监督管理局指导 微众银行 金链盟主办的 2022产业区块链年度峰会暨FISCO BCOS五周年生态大会 将于2月24日下午 在深圳前海华侨城JW万豪酒店举行 此次大会以 数实相生 链筑可持
  • 垂直广告是什么意思_爆火的广告投放方式,抖音Feed流是什么?

    借势2020年的魔幻 短视频行业发展得如火如荼 年初的集体空闲 带动了各大短视频平台的发展 大量抖音创作者的涌入 也让出圈变得越来越难 为了更快出圈 有效利用流量 DOU 和Feed流应运而生 之前已经跟大家讲过DOU 投放的相关事宜 这期
  • 数据结构(三)- 数据的基本操作—增删查

    数据结构 三 增删查 文章目录 数据结构 三 增删查 前言 一 代码对数据的处理 二 数据处理的基本操作 总结 前言 数据最基本的操作 增删查 一 代码对数据的处理 在上篇文章数据结构 二 时间复杂度与空间复杂度中出现的一个例子 在一个数组
  • ubuntu16.04下如何训练PySOT(四):训练、测试、运行demo、评估

    下载预训练模型 从 Google Drive 下载 将预训练模型复制到 pretrained models 文件夹中 训练 在tools目录下打开终端 输入以下命令 即开始训练 CUDA VISIBLE DEVICES 0 python m
  • Matlab中米粒图像处理,米粒个数和大小计算

    clear clc 读取图片rice png I imread rice png 获取图片的背景 BG imopen I strel disk 15 得到背景均匀的图片 I2 imsubtract I BG 得到二值化的图片 level g
  • OpenStack常用命令搜集 —— 筑梦之路

    之前学习搭建过OpenStack 好久都没有使用了 这里主要搜集下OpenStack的常用命令 温故而知新 OpenStack 搭建记录 筑梦之路 筑梦之路的博客 CSDN博客 查看日志 日志位置 使用devstack方式部署 默认日志路径
  • Springboot使用future异步获取ip地址对应的地理位置

    future介绍 Future代表的是异步执行的结果 意思是当异步执行结束之后 返回的结果将会保存在Future中 那么我们什么时候会用到Future呢 一般来说 当我们执行一个长时间运行的任务时 使用Future就可以让我们暂时去处理其他
  • javax.net.ssl.SSLHandshakeException

    点击打开链接 以下是网上搜到的解决方案 在初始化httpclient实例前加上两行 ProtocolSocketFactory fcty new MySecureProtocolSocketFactory Protocol register