如何在Apache HttpComponents HttpClient 5.1中忽略SSL证书错误

10
我该如何使用 Apache HttpComponents HttpClient 5.1 绕过证书验证错误?
我已经找到了一个有效的解决方案,可以绕过HttpClient 4.5中的此类错误,建议自定义 HttpClient 实例:
HttpClient httpClient = HttpClients
            .custom()
            .setSSLContext(new SSLContextBuilder().loadTrustMaterial(null, TrustAllStrategy.INSTANCE).build())
            .setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE)
            .build();

但是对于HttpClient 5.1来说,这并不适用,因为HttpClientBuilderHttpClients.custom()返回的对象)中不存在setSSLContextsetSSLHostnameVerifier方法。请注意保留HTML标签。
1个回答

18

在HC 5.1中有几个专门的构建器可以用于完成相同的任务:

CloseableHttpClient httpclient = HttpClients.custom()
        .setConnectionManager(PoolingHttpClientConnectionManagerBuilder.create()
                .setSSLSocketFactory(SSLConnectionSocketFactoryBuilder.create()
                        .setSslContext(SSLContextBuilder.create()
                                .loadTrustMaterial(TrustAllStrategy.INSTANCE)
                                .build())
                        .setHostnameVerifier(NoopHostnameVerifier.INSTANCE)
                        .build())
                .build())
        .build();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接