httpclient4.5 访问 使用自签名证书的https网站 报错问题的解决

一世执手 提交于 2020-01-07 14:55:11

使用下面的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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!