适用httpClient绕过ssl证书

前段时间,使用httpClient访问外部https接口时出现了需要证书的情况,这个问题解决得办法有两个

  1. 正儿八经的安装证书
  2. 绕过/忽略 证书

今天我们来使用第二种方法,绕过ssl证书访问https接口
首先上两个工具类
1.MyX509TrustManager类

import javax.net.ssl.X509TrustManager;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;public class MyX509TrustManager implements X509TrustManager {/* (non-Javadoc)* @see javax.net.ssl.X509TrustManager#checkClientTrusted(java.security.cert.X509Certificate[], java.lang.String)*/public void checkClientTrusted(X509Certificate[] arg0, String arg1)throws CertificateException {}/* (non-Javadoc)* @see javax.net.ssl.X509TrustManager#checkServerTrusted(java.security.cert.X509Certificate[], java.lang.String)*/public void checkServerTrusted(X509Certificate[] arg0, String arg1)throws CertificateException {}/* (non-Javadoc)* @see javax.net.ssl.X509TrustManager#getAcceptedIssuers()*/public X509Certificate[] getAcceptedIssuers() {return null;}
}

MySecureProtocolSocketFactory类

import org.apache.commons.httpclient.ConnectTimeoutException;
import org.apache.commons.httpclient.HttpClientError;
import org.apache.commons.httpclient.params.HttpConnectionParams;
import org.apache.commons.httpclient.protocol.ControllerThreadSocketFactory;
import org.apache.commons.httpclient.protocol.SecureProtocolSocketFactory;import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import java.io.IOException;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;public class MySecureProtocolSocketFactory implements SecureProtocolSocketFactory {//这里添加一个属性,主要目的就是来获取ssl跳过验证private SSLContext sslContext = null;/*** Constructor for MySecureProtocolSocketFactory.*/public MySecureProtocolSocketFactory() {}/*** 这个创建一个获取SSLContext的方法,导入MyX509TrustManager进行初始化* @return*/private static SSLContext createEasySSLContext() {try {SSLContext context = SSLContext.getInstance("SSL");context.init(null, new TrustManager[] { new MyX509TrustManager() },null);return context;} catch (Exception e) {throw new HttpClientError(e.toString());}}/*** 判断获取SSLContext* @return*/private SSLContext getSSLContext() {if (this.sslContext == null) {this.sslContext = createEasySSLContext();}return this.sslContext;}//后面的方法基本上就是带入相关参数就可以了/** (non-Javadoc)** @see org.apache.commons.httpclient.protocol.ProtocolSocketFactory#createSocket(java.lang.String,*      int, java.net.InetAddress, int)*/public Socket createSocket(String host, int port, InetAddress clientHost,int clientPort) throws IOException, UnknownHostException {return getSSLContext().getSocketFactory().createSocket(host, port,clientHost, clientPort);}/** (non-Javadoc)** @see org.apache.commons.httpclient.protocol.ProtocolSocketFactory#createSocket(java.lang.String,*      int, java.net.InetAddress, int,*      org.apache.commons.httpclient.params.HttpConnectionParams)*/public Socket createSocket(final String host, final int port,final InetAddress localAddress, final int localPort,final HttpConnectionParams params) throws IOException,UnknownHostException, ConnectTimeoutException {if (params == null) {throw new IllegalArgumentException("Parameters may not be null");}int timeout = params.getConnectionTimeout();if (timeout == 0) {return createSocket(host, port, localAddress, localPort);} else {return ControllerThreadSocketFactory.createSocket(this, host, port,localAddress, localPort, timeout);}}/** (non-Javadoc)** @see SecureProtocolSocketFactory#createSocket(java.lang.String,int)*/public Socket createSocket(String host, int port) throws IOException,UnknownHostException {return getSSLContext().getSocketFactory().createSocket(host, port);}/** (non-Javadoc)** @see SecureProtocolSocketFactory#createSocket(java.net.Socket,java.lang.String,int,boolean)*/public Socket createSocket(Socket socket, String host, int port,boolean autoClose) throws IOException, UnknownHostException {return getSSLContext().getSocketFactory().createSocket(socket, host,port, autoClose);}
}

导入这两个工具类后,只需要在你请求的开头加入以下两句代码即可绕过ssl

//声明ProtocolSocketFactory fcty = new MySecureProtocolSocketFactory();//加入相关的https请求方式Protocol.registerProtocol("https", new Protocol("https", fcty, 443));//下面便是正常的逻辑代码HttpClient client = new HttpClient();xxxxxxxx

相关jiar包:
关注公众号回复 HttpClient 即可获取百度网盘链接

HttpClient忽略SSL证书,附带百度网盘jar包相关推荐

  1. 2022年appium超详细环境安装步骤(Mac版本,附带百度网盘安装包)

    二年没有搭建appium环境里,百度了一下,网上帖子倒是很多,但坑也是很多的,决定在此发布一篇较为详细的appium环境安装,让小伙伴们少踩坑 mac 上 Appium 环境搭建 第一步:安装 nod ...

  2. javascript俄罗斯方块 面向对象编程(jQuery)(附带百度网盘链接)

    这个俄罗斯方块游戏是通过javascript面向对象编程的方法编写,代码结构分为游戏类(Game.js),方块类(block.js),地图类(Map.js),方块形状对象类(blockjson.js) ...

  3. 百度网盘下载显示系统限制,无法下载解决

    百度网盘下载显示系统限制,无法下载,是文件写入权限问题,小白新手根据教程设置即可,老手可忽略. 1.打开百度网盘客户端,点击客户端右上角的设置按钮,弹出设置菜单选择 传输设置 –> 下载位置 - ...

  4. CodeBlocks 安装教程(百度网盘)

    下载 1.在浏览器上搜索CodeBlocks官网或者直接点击该网址http://www.codeblocks.org/ 进入CodeBlocks官网. 附带百度网盘地址:链接:https://pan. ...

  5. coppeliasim/vrep官网软件安装包(免费百度网盘链接)

    2021年10月23日更新说明:增加了官网链接 增加了CoopeliaSim Edu V4.2.0的windows.ubuntu.macOS各系统的软件包@meng 2022年4月21日更新说明:增加 ...

  6. 分享我的百度网盘超级会员取消自动续费流程

    前几天为了在百度网盘下载一个较大的文件,普通下载速度较慢由于比较着急就顺手开通了超级会员. 当时我没有注意到购买的是百度网盘连续包月服务,到第二个月开始的时候微信支付提示又被扣了25元,仔细一看原来是 ...

  7. md5碰撞介绍及工具,并对百度网盘进行碰撞

    md5碰撞介绍及工具,并对百度网盘进行碰撞 前言 什么是MD5 什么是MD5碰撞 md5碰撞 常见的碰撞法 差分攻击 构造前缀碰撞法 快速 MD5 碰撞生成器使用方法 百度网盘md5碰撞攻击 总结 参 ...

  8. 如何把百度网盘下载速度提高 100 倍,我推荐这个下载工具

    转载原文 : https://blog.csdn.net/zhige_me/article/details/80465191 友情提示,如果不好使,可以看看其他几篇: 其他几个类似工具: [high- ...

  9. 解决百度网盘发票下载ERR_SSL_PROTOCOL_ERROR问题

    在进行百度网盘的发票下载时,出现ERR_SSL_PROTOCOL_ERROR错误,即服务器SSL证书错误,发票链接地址https://bj.bcebos.com/*,解决办法:使用HTTP链接(将ht ...

  10. 计算机里面的百度云怎么弄消失,我换了个手机登录我的百度网盘,里面存的东西都不见了,谁能告诉我怎么弄回来么...

    我换了个手机登录我的百度网盘,里面存的东西都不见了,谁能告诉我怎么弄回来么以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! ...

最新文章

  1. 数据仓库中的维度表和事实表概述
  2. java内存分析_java内存分析总结
  3. C#——《C#语言程序设计》实验报告——面向对象程序设计——自动出题判分小程序
  4. linux IP 命令使用举例
  5. 改变ComboBox控件的高度
  6. 12C RAC for ASM添加磁盘步骤
  7. Magento教程 21:新增客户评价的满意度项目! (Add rating)
  8. 原创电子书:C#难点逐个击破
  9. flex读取bolg的代码
  10. Java中List.forEach()方法使用
  11. 1、Java多线程基础:进程和线程之由来
  12. jep3.5 java 动态公式
  13. EXCEL使用vlookup函数合并多个工作表
  14. C# 使用OpenXML创建PPT表格
  15. 接口测试-什么是header头部?
  16. 小程序在线客服完整实现
  17. Android-AIUI技能设计技巧及处理策略总结
  18. 怎么在php中加拼图游戏,js+html5实现可在手机上玩的拼图游戏
  19. 学习python记录——第五天
  20. 基于OpenWrt的Wol(wake on lan)远程唤醒

热门文章

  1. 干货| 机器学习模型与算法最全分类汇总!
  2. 内存颗粒性能测试软件,PC技巧分享 篇四:如何通过快速识别内存颗粒了解超频性能...
  3. python 服务器后台运行
  4. 土地房屋权属登记系统
  5. linux下cpp文件,linux怎么编译cpp文件?
  6. JavaScript字符串的长度
  7. css点击按钮改变样式
  8. 阿里巴巴实习 面试题
  9. NOI2021颓废记
  10. 云队友丨知乎10万赞回答:真正厉害的人,是怎么分析问题的?