如何访问https的网站?-【httpclient】
备注:本处代码使用groovy和httpclient4.3作为例子进行讲述
在普通方式下,当使用httpclient进行访问某个网站时,大致使用如下的代码进行访问:
CloseableHttpClient httpclient = HttpClients.createDefault(); HttpGet httpMethod = new HttpGet(url); response = httpclient.execute(httpMethod);
当使用上述代码来访问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
要解决此问题,可以通过如下的方式:
首先创建一个类DefaultTrustManager
class DefaultTrustManager implements X509TrustManager{
    @Override
    void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
    }
    @Override
    void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
    }
    @Override
    X509Certificate[] getAcceptedIssuers() {
        return null
    }
}
然后在创建httpclient时,使用如下的代码:
def trustManagers = new TrustManager[1]
trustManagers[0] = new DefaultTrustManager() SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(new KeyManager[0], trustManagers, new SecureRandom());
SSLContext.setDefault(sslContext); sslContext.init(null, trustManagers, null);
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext,
SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); CloseableHttpClient httpclient = HttpClients.custom()
.setSSLSocketFactory(sslsf)
.build();
这样在访问某些https的网站时就能正常访问了。
如何访问https的网站?-【httpclient】的更多相关文章
- 只要是使用函数file_get_contents访问 https 的网站都要开启
		
使用file_get_contents();报错failed to open stream: Unable to find the socket transport "ssl" - ...
 - Android如何使用WebView访问https的网站
		
Android中可以用WebView来访问http和https的网站,但是默认访问https网站时,假如证书不被Android承认,会出现空白页面,且不会有任何提示信息,这时我们必须加多一些配置. 此 ...
 - Firefox访问https的网站,一直提示不安全
		
http://mozilla.com.cn/thread-374897-1-1.html 要激活此功能步骤如下: 在地址栏键入"about:config" 点击“我了解此风险” 在 ...
 - 使用 requests 访问 HTTPS
		
当我们访问 HTTPS 的网站时,需要进行证书验证,在浏览器中可以自动处理验证问题,在 Python 中有以下两种做法: import requests //不进行证书验证,但这种方式会出现警告,如下 ...
 - idhttp访问HTTPS
		
idhttp访问HTTPS 访问一个 WEB 网站,如果采用 HTTP 的话,直接使用 TIdHTTP 这个控件,最简单的用法是: S := IdHTTP1.Get('www.qq.com'); 这里 ...
 - Delphi 访问https /SSL、OpenSSL
		
访问 Web 网站,最简单用法直接使用 TIdHTTP 控件: 例如:AA := IdHTTP1.Get('www.baidu.com.'); 访问 https 的网站,需要 SSL 库. 在 Win ...
 - c# 中HttpClient访问Https网站
		
c# 中HttpClient访问Https网站,加入如下代码: handler = new HttpClientHandler() ;handler.AllowAutoRedirect = true; ...
 - AFNetworking 原作者都无法解决的问题: 如何使用ip直接访问https网站?
		
背景 最近App似乎有报异常是DNS无法解析,尝试解决此问题.搜集到的资料很少,甚至连AFN原作者都判定这可能是一个无解的问题,参见: https://github.com/AFNetworking/ ...
 - Python使用requests模块访问HTTPS网站报错`certificate verify failed`
		
使用requests模块访问HTTPS网站报错: SNIMissingWarning: An HTTPS request has been made, but the SNI (Subject Nam ...
 
随机推荐
- centos6.8上PHP5.3升级到PHP5.4及更高版本方法
			
执行命令下载.安装yum源,当前是针对Centos6并且64位版本的源: [root@T_249 yum.repos.d]# rpm -ivh http://dl.fedoraproject.org/ ...
 - localstorage实现网页状态记录比如放音乐功能的实例
			
<div class="music"> <a href="javascript:;" onclick="playPause();&q ...
 - spring3.1 profile 配置不同的环境
			
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spr ...
 - 029_mac下nginx管理
			
一. brew info nginx #查看nginx信息 nginx: stable 1.13.12 (bottled), HEAD Docroot is: /usr/local/var/www T ...
 - Jenkins pipeline概念理解
			
1.Jenkins Pipeline总体介绍 Pipeline,简而言之,就是一台运行于Jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程 ...
 - scrapy-redis(调度器Scheduler源码分析)
			
settings里面的配置:'''当下面配置了这个(scrapy-redis)时候,下面的调度器已经配置在scrapy-redis里面了'''##########连接配置######## REDIS_ ...
 - python-面向对象之继承
			
一.继承介绍 继承是一种新建类的方式,新建的类称之为子类或者派生类,被继承的类称为父类/基类/超类 python中继承的特点: 1.子类可以遗传/重用父类的属性 2.子类可以有多个父类 3.Pytho ...
 - eclipse  c++11 cmake  gnuradio
			
承接之前的脚本.修改一下这个脚本的代码就可以让eclipse使用C++11了 #!/bin/sh echo "creat_debug for sdk" echo "mkd ...
 - Python学习【第2篇】:Python数据结构
			
Python数据结构 1.数字类型 2.字符串 3.列表 4.元组 5.字典 6.集合
 - 【python】声明编码的格式
			
来自:http://www.xuebuyuan.com/975181.html 编码声明必须在第一行或者第二行,且要符合正则表达式 "coding[:=]\s*([-\w.]+)" ...