spring—在使用ApacheHTTPS库时无法在java中创建客户端

nszi6y05  于 2021-07-23  发布在  Java
关注(0)|答案(1)|浏览(275)

我正在处理一个应用程序,我必须将请求发送到另一个正在运行的服务器。每当我尝试创建客户机以便将api请求发送到服务器时,它都会卡在那里。它也不会抛出异常,也不会被执行。那根线什么也没做就死了。我在每一行后面都放了日志进行了大量调试,发现ssl构建行有问题。如果我尝试从本地机器执行相同的代码,它会被干净地执行,但从我的应用程序执行失败。有人能告诉我确切的问题是什么吗?这是我为创建客户端而编写的代码。我认为问题与证书有关,但在verify方法中,它表示将所有内容都设置为true。

private  HttpClient createClient() throws Exception {
        X509TrustManager x509TrustManager = new X509TrustManager() {
            public X509Certificate[] getAcceptedIssuers() {
                return null;
            }

            public void checkClientTrusted(X509Certificate[] certs, String authType) {

            }

            public void checkServerTrusted(X509Certificate[] certs, String authType) {

            }
        };
        TrustManager[] trustManagers = new TrustManager[] {x509TrustManager};
        SSLContext sslContext = SSLContext.getInstance("TLSv1.2");
        sslContext.init(null, trustManagers, new SecureRandom());
             // code works fine till here and after that this thread just dies.
        return HttpClients.custom().setSSLHostnameVerifier(new HostnameVerifier() {
            public boolean verify(String hostname, SSLSession session) {
                return true;
            }
        }).setSSLContext(sslContext).build();
    }
vx6bjr1n

vx6bjr1n1#

问题出在httpcore版本上。因为我使用的是httpclient版本大于4.5,而httpcore版本小于4。代码没有问题。如果有人正在使用apache库创建客户端,请确保您使用的是更新的版本。

相关问题