超详细HttpClient加载安全证书post请求访问https示例

(注:此测试java版本为1.7,经过测试java7以上(不含java7)的版本无需加载安全证书,也无需绕过安全证书就可以通过建立httpClient连接访问https网站,所以如果项目环境为Java7以上的小伙伴就不用考虑这些问题啦。)

最近公司爬虫项目因为一个网站的SSL证书升级问题,导致使用httpClient绕过SSL证书方法失效,因此尝试将该网站安全证书下载下来,将其加载到连接中去,经测试后成功问题解决。

  • 浏览器(以chrome为例)访问https://www.apapanet.com/,点击域名左侧的小锁,可以查看该网站的证书信息,将信息证书导出,我这里保存为cer格式,路径为D:\Java\apapanet.cer。
  • 接下来就是代码了,代码如下:
import java.io.FileInputStream;
import java.security.KeyStore;
import java.security.cert.Certificate;
import java.security.cert.CertificateFactory;import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManagerFactory;import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpStatus;
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.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;public class httpClient{public static void main(String[] args) throws Exception {// Load CertificateCertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");// 这里的路径为证书存放路径Certificate certificate = certificateFactory.generateCertificate(new FileInputStream("D:\\Java\\apapanet.cer"));// Create TrustStoreKeyStore trustStoreContainingTheCertificate = KeyStore.getInstance("JKS");trustStoreContainingTheCertificate.load(null, null);// AddCertificate 第一个参数为证书别名, 可以任取trustStoreContainingTheCertificate.setCertificateEntry("XYZ", certificate);TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); trustManagerFactory.init(trustStoreContainingTheCertificate);// Create SSLContext   我这里协议为TLSv1.2SSLContext sslContext = SSLContext.getInstance("TLSv1.2");sslContext.init(null,trustManagerFactory.getTrustManagers(),null);SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext);// Create custom httpClient 创建自定义httpClient连接CloseableHttpClient httpClient = HttpClients.custom().setSSLSocketFactory(sslConnectionSocketFactory).build(); try{   // POST请求HttpPost method = new HttpPost("https://www.apapanet.com/");System.out.println("executing request" + method.getRequestLine());method.setHeader("Content-type", "application/json;charset=utf-8");method.setHeader("Accept", "application/json");CloseableHttpResponse response = null;response = httpClient.execute(method);int status = response.getStatusLine().getStatusCode();if (status == HttpStatus.SC_OK) {String body = EntityUtils.toString(response.getEntity());if(StringUtils.isNotBlank(body)){System.out.println("body: "+body);}}response.close();} finally {httpClient.close();}}
}
  • 测试通过成功返回页面数据~~

超详细HttpClient加载安全证书post请求访问https示例相关推荐

  1. nginx 稳定版 1.16.0 发布,支持动态加载 SSL 证书

    开发四年只会写业务代码,分布式高并发都不会还做程序员?   nginx 1.16.0 稳定版已发布,包含来自 1.15.x 主线分支的新功能和错误修复: 针对流模块(stream module)中的 ...

  2. 为网格布局图片打造的超炫 CSS 加载动画

    今天,我想与大家分享一些专门为网格布局的图像制作的很酷的 CSS 加载动画效果.您可以把这些效果用在你的作品集,博客或任何你想要的网页中.设置很简单.我们使用了下面这些工具库来实现这个效果: Norm ...

  3. openssl 从内存直接加载CA证书

    参考链接 openssl 从内存加载ca证书 - Zzz...y - 博客园 (cnblogs.com) C ++ / OpenSSL:使用根CA从缓冲区而不是文件(SSL_CTX_load_veri ...

  4. nginx 稳定版 1.16.0 发布 支持动态加载SSL证书

    Nginx(发音同 engine x)是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个 BSD-like 协议下发行,可以在 UNIX.GNU/Lin ...

  5. cefsharp 加载网页慢_网站访问慢的排查方案(史上最详细)

    说实话,比起网站打不开,网站访问慢更让人抓狂. 因为造成网站访问慢的因素太多了,一般用户根本无从下手! 任他千头万绪的问题,从以下三个方面入手,也能轻松破解访问慢的大难题 :响应时间.执行时间.加载时 ...

  6. IIS初始化(预加载),解决第一次访问慢,程序池被回收问题

    IIS初始化(预加载),解决第一次访问慢,程序池被回收问题 参考文章: (1)IIS初始化(预加载),解决第一次访问慢,程序池被回收问题 (2)https://www.cnblogs.com/team ...

  7. 关于JSP页面无法加载css,游览器访问jsp页面样式未生效导致乱序

    关于JSP页面无法加载css,游览器访问jsp页面样式未生效导致乱序 1.修改自己过滤器中对编码格式的修改 如图: 代码如下: public void doFilter(ServletRequest ...

  8. html页面加载时执行ajax请求,函数在页面加载时发送ajax请求

    我有下面的代码在页面加载运行.我只想在用户完成在文本框中写入时运行它.函数在页面加载时发送ajax请求 代码是: $(document).ready(function() { $("#use ...

  9. 安装SSL证书后不能访问https网站怎么办

    很多朋友在安装配置完SSL证书后不能访问https网站,搞不清楚问题出在哪里,更不知道如何解决.下面就以nginx配置SSL证书为例,来讲一下安装SSL证书后不能访问的解决方法. 1.确保可以以htt ...

最新文章

  1. 在github上创建新分支
  2. bzoj2049 [Sdoi2008]Cave 洞穴勘测——LCT
  3. Masonry('couldn't find a common superview for)
  4. 最大均值差异java_MATLAB最大均值差异(Maximum Mean Discrepancy)
  5. 资源打包后项目中的文件
  6. java调用oracle 存储过程 以及游标使用
  7. 程序员需要了解的十个高级SQL概念
  8. java微信第三方支付
  9. Mysql学习总结(57)——MySQL查询当天、本周、本月、上周、本周、上月、距离当前现在6个月数据
  10. Linux学习总结(33)——Linux Java启动关闭bash脚本
  11. ftp服务器通信协议设计,基于FTP协议的文件传输服务器的研究
  12. 逆向工具IDA安装教程
  13. python-自制单词本导入有道词典
  14. 购买的域名设置域名解析
  15. 正则表达式lookahead and lookbehind zero-length assertions
  16. 如何检测页面是否允许访问Cookie
  17. flashpaper java_FlashPaper API 说明
  18. 11 寻找峰值(Find Peak Element)
  19. 动态标题文字PR模板 300+高质量MOGRT字幕PR动态图形模板包
  20. 人工势场法路径规划算法(APF)

热门文章

  1. 【论文速读】自动解题+认知推理+常识发现
  2. 脱离标准流(1)浮动
  3. flash在线视频播放器
  4. Gradio快速搭建ML/DL Web端服务
  5. vue简单实现吸顶效果pc
  6. 时间序列分析深入总结(一)(附代码)
  7. JAVA学习 11.10
  8. 电磁兼容测试在测试带载电机控制系统的方法
  9. Notability for Mac(笔记软件)
  10. Spring-全面详解(基础知识)