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