From 2b2a90e952c2c59642c41d8af5759ceb51b9e099 Mon Sep 17 00:00:00 2001 From: liurunyu <lry9898@163.com> Date: 星期一, 13 五月 2024 16:19:14 +0800 Subject: [PATCH] 根据王江海修改完善的协议(20240510),进行协议实现完善。 --- pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/HttpUtils.java | 92 +++++++++++++++++++++++++++++++++++----------- 1 files changed, 70 insertions(+), 22 deletions(-) diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/HttpUtils.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/HttpUtils.java index 04bd793..05cee30 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/HttpUtils.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/HttpUtils.java @@ -6,6 +6,7 @@ import java.security.NoSuchAlgorithmException; import java.security.cert.X509Certificate; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Map; @@ -17,15 +18,25 @@ import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; +import org.apache.http.client.config.AuthSchemes; +import org.apache.http.client.config.CookieSpecs; +import org.apache.http.client.config.RequestConfig; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpDelete; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpPut; +import org.apache.http.config.Registry; +import org.apache.http.config.RegistryBuilder; +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.entity.ByteArrayEntity; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; +import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; import org.apache.http.message.BasicNameValuePair; import org.apache.http.conn.ClientConnectionManager; import org.apache.http.conn.scheme.Scheme; @@ -255,40 +266,77 @@ } private static HttpClient wrapClient(String host) { - CloseableHttpClient httpClient = HttpClients.createDefault(); if (host.startsWith("https://")) { - sslClient(httpClient); + return sslClient(); + }else{ + return HttpClients.createDefault(); } - - return httpClient; } +// +// private static void sslClient(HttpClient httpClient) { +// try { +// SSLContext ctx = SSLContext.getInstance("TLS"); +// X509TrustManager tm = new X509TrustManager() { +// public X509Certificate[] getAcceptedIssuers() { +// return null; +// } +// +// public void checkClientTrusted(X509Certificate[] xcs, String str) { +// +// } +// +// public void checkServerTrusted(X509Certificate[] xcs, String str) { +// +// } +// }; +// ctx.init(null, new TrustManager[] { tm }, null); +// SSLSocketFactory ssf = new SSLSocketFactory(ctx); +// ssf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); +// ClientConnectionManager ccm = httpClient.getConnectionManager(); +// SchemeRegistry registry = ccm.getSchemeRegistry(); +// registry.register(new Scheme("https", 443, ssf)); +// } catch (KeyManagementException ex) { +// throw new RuntimeException(ex); +// } catch (NoSuchAlgorithmException ex) { +// throw new RuntimeException(ex); +// } +// } - private static void sslClient(HttpClient httpClient) { + /** + * 鍦ㄨ皟鐢⊿SL涔嬪墠闇�瑕侀噸鍐欓獙璇佹柟娉曪紝鍙栨秷妫�娴婼SL + * 鍒涘缓ConnectionManager锛屾坊鍔燙onnection閰嶇疆淇℃伅 + * @return HttpClient 鏀寔https + */ + private static HttpClient sslClient() { try { - SSLContext ctx = SSLContext.getInstance("TLS"); - X509TrustManager tm = new X509TrustManager() { - public X509Certificate[] getAcceptedIssuers() { + // 鍦ㄨ皟鐢⊿SL涔嬪墠闇�瑕侀噸鍐欓獙璇佹柟娉曪紝鍙栨秷妫�娴婼SL + X509TrustManager trustManager = new X509TrustManager() { + @Override public X509Certificate[] getAcceptedIssuers() { return null; } - - public void checkClientTrusted(X509Certificate[] xcs, String str) { - - } - - public void checkServerTrusted(X509Certificate[] xcs, String str) { - - } + @Override public void checkClientTrusted(X509Certificate[] xcs, String str) {} + @Override public void checkServerTrusted(X509Certificate[] xcs, String str) {} }; - ctx.init(null, new TrustManager[] { tm }, null); - SSLSocketFactory ssf = new SSLSocketFactory(ctx); - ssf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); - ClientConnectionManager ccm = httpClient.getConnectionManager(); - SchemeRegistry registry = ccm.getSchemeRegistry(); - registry.register(new Scheme("https", 443, ssf)); + SSLContext ctx = SSLContext.getInstance(SSLConnectionSocketFactory.TLS); + ctx.init(null, new TrustManager[] { trustManager }, null); + SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory(ctx, NoopHostnameVerifier.INSTANCE); + // 鍒涘缓Registry + RequestConfig requestConfig = RequestConfig.custom().setCookieSpec(CookieSpecs.STANDARD_STRICT) + .setExpectContinueEnabled(Boolean.TRUE).setTargetPreferredAuthSchemes(Arrays.asList(AuthSchemes.NTLM, AuthSchemes.DIGEST)) + .setProxyPreferredAuthSchemes(Arrays.asList(AuthSchemes.BASIC)).build(); + Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create() + .register("http", PlainConnectionSocketFactory.INSTANCE) + .register("https",socketFactory).build(); + // 鍒涘缓ConnectionManager锛屾坊鍔燙onnection閰嶇疆淇℃伅 + PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(socketFactoryRegistry); + CloseableHttpClient closeableHttpClient = HttpClients.custom().setConnectionManager(connectionManager) + .setDefaultRequestConfig(requestConfig).build(); + return closeableHttpClient; } catch (KeyManagementException ex) { throw new RuntimeException(ex); } catch (NoSuchAlgorithmException ex) { throw new RuntimeException(ex); } } + } -- Gitblit v1.8.0