From 1c465fdb292ccab2649a3247cfc8a883725319d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=BF=97=E6=9D=83?= Date: Tue, 19 Mar 2024 09:59:52 +0800 Subject: [PATCH] Update HttpClientFactory.java MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit JDK1.8 , 使用 MaasServiceImpl 报错 , 报错如下, 根因是 `maas-api.ml-platform-cn-beijing.volces.com` 域名对JDK来说不可信。 (当然可以把证书导入进Jre来解决,但是这里隐藏着证书过期后带来的风险,不确定证书何时更换或过期。改改动来取消证书验证) 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 at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1949) at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:302) --- .../volcengine/http/HttpClientFactory.java | 64 ++++++++++++------- 1 file changed, 41 insertions(+), 23 deletions(-) diff --git a/volc-sdk-java/src/main/java/com/volcengine/http/HttpClientFactory.java b/volc-sdk-java/src/main/java/com/volcengine/http/HttpClientFactory.java index ce2f32f6e..f589560a4 100644 --- a/volc-sdk-java/src/main/java/com/volcengine/http/HttpClientFactory.java +++ b/volc-sdk-java/src/main/java/com/volcengine/http/HttpClientFactory.java @@ -7,12 +7,20 @@ import org.apache.http.client.HttpRequestRetryHandler; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.protocol.HttpClientContext; +import org.apache.http.config.Registry; +import org.apache.http.config.RegistryBuilder; import org.apache.http.conn.ConnectionKeepAliveStrategy; +import org.apache.http.conn.socket.ConnectionSocketFactory; +import org.apache.http.conn.socket.PlainConnectionSocketFactory; +import org.apache.http.conn.ssl.NoopHostnameVerifier; +import org.apache.http.conn.ssl.SSLConnectionSocketFactory; +import org.apache.http.conn.ssl.TrustAllStrategy; import org.apache.http.impl.client.HttpClients; import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; import org.apache.http.message.BasicHeaderElementIterator; import org.apache.http.protocol.HTTP; import org.apache.http.protocol.HttpContext; +import org.apache.http.ssl.SSLContextBuilder; import java.io.IOException; import java.io.InterruptedIOException; @@ -46,32 +54,42 @@ public boolean retryRequest(IOException exception, private static ConnectionKeepAliveStrategy connectionKeepAliveStrategy; public static ClientInstance create(ClientConfiguration configuration, HttpHost proxy) { - PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(); - int maxCon = configuration.getMaxConnections(); - int maxConPerRoute = configuration.getMaxConPerRoute(); - connectionManager.setMaxTotal(maxCon); - connectionManager.setDefaultMaxPerRoute(maxConPerRoute); + try { + Registry socketFactoryRegistry = RegistryBuilder.create() + .register("http", PlainConnectionSocketFactory.getSocketFactory()) + .register("https", new SSLConnectionSocketFactory( + SSLContextBuilder.create().loadTrustMaterial(TrustAllStrategy.INSTANCE).build(), + NoopHostnameVerifier.INSTANCE)) + .build(); + PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(socketFactoryRegistry); + int maxCon = configuration.getMaxConnections(); + int maxConPerRoute = configuration.getMaxConPerRoute(); + connectionManager.setMaxTotal(maxCon); + connectionManager.setDefaultMaxPerRoute(maxConPerRoute); - ConnectionKeepAliveStrategy strategy; - if (connectionKeepAliveStrategy != null) { - strategy = connectionKeepAliveStrategy; - } else { - strategy = getConnectionKeepAliveStrategy(); - } - HttpClient httpClient; - httpClient = HttpClients.custom() - .setConnectionManager(connectionManager) - .setKeepAliveStrategy(strategy) - .setRetryHandler(httpRequestRetryHandler) - .setDefaultRequestConfig(RequestConfig.custom().setStaleConnectionCheckEnabled(true).build()) - .setProxy(proxy) - .build(); + ConnectionKeepAliveStrategy strategy; + if (connectionKeepAliveStrategy != null) { + strategy = connectionKeepAliveStrategy; + } else { + strategy = getConnectionKeepAliveStrategy(); + } + HttpClient httpClient; + httpClient = HttpClients.custom() + .setConnectionManager(connectionManager) + .setKeepAliveStrategy(strategy) + .setRetryHandler(httpRequestRetryHandler) + .setDefaultRequestConfig(RequestConfig.custom().setStaleConnectionCheckEnabled(true).build()) + .setProxy(proxy) + .build(); - IdleConnectionMonitorThread daemonThread = new IdleConnectionMonitorThread(connectionManager); - daemonThread.setDaemon(true); - daemonThread.start(); + IdleConnectionMonitorThread daemonThread = new IdleConnectionMonitorThread(connectionManager); + daemonThread.setDaemon(true); + daemonThread.start(); - return new ClientInstance(httpClient, daemonThread); + return new ClientInstance(httpClient, daemonThread); + }catch (Exception ex){ + throw new RuntimeException(ex); + } } public static ConnectionKeepAliveStrategy getConnectionKeepAliveStrategy() {