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 的相关文章

  • ES7.5.2 script_score查询的bug

    背景 1 需要用到dense vector script score来进行算分 排序 2 ES版本为7 5 2 用到了自定义的插件 短期无法升级到7 17 5 或更高版本 3 script score查询在加入date类型的字段作为查询条件
  • Java中抛出的内存异常总结

    Java中抛出的内存异常总结 根据上述的总结 可以整理出来 JVM在运行的时候大致会分为五个区域 方法区 堆区 本地方法栈 虚拟机栈 程序计数器 其中程序计数器不会报出OutOfMemoryError错误 其他的都有可能会报出这个错误 St
  • Java的异常入门

    概念 异常就是程序出现了不正常的情况 会导致JVM非正常停止 语法错误不算异常体系中 异常体系 编译时异常 运行时异常 虚拟机默认处理方式 代码中出现异常 程序会先判断有没有处理异常的代码 如果没有就会让调用者 虚拟机 处理 如果有就会走处
  • fragment中嵌套viewpager,vierpager中有多个fragment,不显示 .

    http blog csdn net shaoyizhe2006 article details 27352349
  • java socket异常总结

    Java Socket 网络编程常见异常 1 java net SocketTimeoutException 这 个异 常比较常见 socket 超时 一般有 2 个地方会抛出这个 一个是 connect 的 时 候 这 个 超 时 参 数
  • 问题解决:The project cannot be built until build path errors are resolved

    http blog csdn net marty zhu article details 2566299 1 看看project Build Automatically有没有勾上 如果没有 勾上以后 clean一下 重启eclipse 2
  • Elasticsearch出现field expansion matches too many fields异常

    7 4 2的集群里面执行query string 语句时 异常信息 报了 reason field expansion matches too many fields limit 1024 got 15448 表示子查询数量大于1024 对
  • 异常java.lang.NoSuchMethodError: org.apache.poi.ss.usermodel.Sheet.getDrawingPat原因与解决

    在做excel导出时遇到的异常 java lang NoSuchMethodError org apache poi ss usermodel Sheet getDrawingPat 原因是 jar包不兼容 这是依赖
  • 多线程异常 和 事务(一)

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

    在多表连接查询中 若连接条件字段在多个表中同名 却没有使用全限定名称 如 logicdeleteFlag 执行时会报这个异常 MySQL没办法识别 这个字段指的是哪个表的字段 必须使用全限定名称 如 tableName logicdelet
  • libcore.io.ErrnoException: open failed: EINVAL (Invalid argument)

    出现异常 04 16 17 58 52 714 W System err 23703 Caused by libcore io ErrnoException open failed EINVAL Invalid argument 04 16
  • MySQL Workbench 报错 Cannot connect to Database Server

    MySQL Workbench是一款专为MySQL设计的ER 数据库建模工具 可以使用MySQL Workbench设计和创建新的数据库图示 建立数据库文档 以及进行复杂的MySQL迁移 MySQL Workbench是下一代的可视化数据库
  • Mybatis与JDBC批量插入MySQL数据库性能测试及解决方案

    http blog csdn net boonya article details 70157820 Mybatis与JDBC批量插入MySQL数据库性能测试 Author boonya Date 2017 04 13 1 背景 系统中需要
  • C++学习笔记(三)--继承中的异常处理

    继承中的异常处理 include
  • UncaughtExceptionHandler 捕获异常线程以及出现异常重启

    1 捕获线程的异常只需要修改Executor产生线程的方式 即为每一个线程添加一个实现了Thread UncaughtExceptionHandler接口的异常处理器来捕获线程发生的异常 出现异常之后在捕捉异常中在重新开启线程即可 例子如下
  • 多线程的一些小问题集锦

    1 线程死亡之后不能再次启动 测试线程是否已经死亡 可以调用isAlive 方法 当线程处于就绪 运行 阻塞三种状态时 返回true 当线程处于死亡 新建状态时返回false 实例代码如下 package com thread public
  • C#编程中遇到的一些异常及部分异常的解决方法

    以下内容是在本人在C 编程中遇到的异常 针对部分异常给出了解决办法 但是此解决方法是否真的好用 有待进一步考证 仅供参考 1 System Invalid Operation Exception 类型的未经处理的异常 出现在System W
  • java各种异常总结

    一 java异常汇总 1 Throwable 是所有异常的祖先 Throwable有两个子类 Error和Exception 2 Error是错误 表示运行应用程序中出现了严重错误 都是通过Error抛出的 一般程序无法处理 Excepti
  • 感冒交叉感染

    给没有感染的家人服用板蓝根颗粒 窗户每天要打开同风至少在半小时 平时可以用84消毒液拖地或清洗抹布等 病人的生活用品单方 如果条件允许可以按消毒灯 平时让家人多喝水 适当运动 感染者要带口罩 餐具隔离 室内用醋蒸薰消毒 经常开窗通风 未感者
  • python——异常机制及常见异常汇总

    异常机制本质 异常指程序运行过程中出现的非正常现象 例如用户输入错误 除数为零 需 要处理的文件不存在 数组下标越界等 所谓异常处理 就是指程序在出现问题时依然可以正确的执行剩余的程序 而 不会因为异常而终止程序执行 python 中 引进

随机推荐

  • 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