使用下面的getHttpClient()方法代替HttpClients.createDefault()即可。(可以不是static)
private static CloseableHttpClient getHttpClient() {
try {
SSLContext sslContext = SSLContexts.custom()
.loadTrustMaterial(TrustSelfSignedStrategy.INSTANCE)
.build();
ConnectionSocketFactory plainsf = new PlainConnectionSocketFactory();
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
Registry<ConnectionSocketFactory> r = RegistryBuilder.<ConnectionSocketFactory>create()
.register("http", plainsf)
.register("https", sslsf)
.build();
HttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(r);
return HttpClients.custom()
.setConnectionManager(cm)
.build();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
主要是配置了信任自签名的证书和不对域名进行校验。
上面是httpclient4.5的,如果是httpclient 3.x的,可以参考官网http://hc.apache.org/httpclient-3.x/sslguide.html
当使用httpclient4.5尝试访问使用自签名证书的HTTPS网站时,会遇到报错问题。通过替换HttpClients.createDefault()为getHttpClient()方法,并配置信任自签名证书及禁用域名校验,可以成功解决此问题。对于httpclient 3.x版本,官方提供了相应的SSL配置指南。
1433

被折叠的 条评论
为什么被折叠?



