From 75612bfbb092c7dd96d034a0db32662e6fd62dc2 Mon Sep 17 00:00:00 2001
From: 18034727885 <973609879@qq.com>
Date: 星期四, 20 八月 2026 13:52:41 +0800
Subject: [PATCH] 优化检测升级逻辑和接口证书验证

---
 app/src/main/java/com/driver/igotrip/netUtls/HttpManager.java |   86 ++++++++++++++++++++++++++++++++++++++----
 1 files changed, 77 insertions(+), 9 deletions(-)

diff --git a/app/src/main/java/com/driver/igotrip/netUtls/HttpManager.java b/app/src/main/java/com/driver/igotrip/netUtls/HttpManager.java
index 5386ee4..fe62003 100644
--- a/app/src/main/java/com/driver/igotrip/netUtls/HttpManager.java
+++ b/app/src/main/java/com/driver/igotrip/netUtls/HttpManager.java
@@ -5,6 +5,9 @@
 
 import android.util.Log;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.driver.igotrip.BuildConfig;
 import com.driver.igotrip.R;
 import com.driver.igotrip.base.Const;
@@ -20,6 +23,7 @@
 import java.io.InputStream;
 import java.lang.reflect.Type;
 import java.security.KeyStore;
+import java.security.cert.CertificateException;
 import java.security.cert.CertificateFactory;
 import java.security.cert.X509Certificate;
 import java.util.HashMap;
@@ -55,7 +59,10 @@
  */
 
 public class HttpManager {
-    private final ApiServics service = initBaseData().create(ApiServics.class);
+    //只信任指定证书的服务 安全级别高
+    private final ApiServics service = initBaseData(true, false).create(ApiServics.class);
+    //信任所有证书的服务 安全级别低
+    private final ApiServics allTrustService = initBaseData(false, true).create(ApiServics.class);
     private Gson gson;
     private final Map<String, String> headerParams = new HashMap<>();
 
@@ -82,6 +89,7 @@
         }
     }
 
+    @Nullable
     private SSLSocketFactory getSSLSocketFactory(X509TrustManager trustManager) {
         try {
             SSLContext tls = SSLContext.getInstance("TLS");
@@ -93,6 +101,10 @@
         return null;
     }
 
+    /**
+     * 创建特定证书信任管理器
+     */
+    @Nullable
     private X509TrustManager createTrustManager(int certificateResId) {
         try {
             CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
@@ -121,20 +133,53 @@
     }
 
     /**
+     * 创建所有证书信任管理器
+     */
+    @NonNull
+    private X509TrustManager createAllTrustManager() {
+        return new X509TrustManager() {
+            @Override
+            public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
+
+            }
+
+            @Override
+            public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
+
+            }
+
+            @Override
+            public X509Certificate[] getAcceptedIssuers() {
+                return new X509Certificate[0];
+            }
+        };
+    }
+
+    /**
      * 初始化数据
      *
      */
-    private Retrofit initBaseData() {
+    private Retrofit initBaseData(boolean isUseCert, boolean isTrustAll) {
         // 监听请求条件
         OkHttpClient.Builder builder = new OkHttpClient.Builder();
         builder.connectTimeout(3, TimeUnit.MINUTES);
         builder.readTimeout(3, TimeUnit.MINUTES);
         builder.writeTimeout(3, TimeUnit.MINUTES);
-        X509TrustManager trustManager = createTrustManager(R.raw.star_gopost_ci);
-        if (trustManager != null) {
-            SSLSocketFactory sslSocketFactory = getSSLSocketFactory(trustManager);
-            if (sslSocketFactory != null) {
-                builder.sslSocketFactory(sslSocketFactory, trustManager);
+        if (isUseCert) {
+            X509TrustManager trustManager = createTrustManager(R.raw.star_gopost_ci);
+            if (trustManager != null) {
+                SSLSocketFactory sslSocketFactory = getSSLSocketFactory(trustManager);
+                if (sslSocketFactory != null) {
+                    builder.sslSocketFactory(sslSocketFactory, trustManager);
+                }
+            }
+        } else {
+            if (isTrustAll) {
+                X509TrustManager trustManager = createAllTrustManager();
+                SSLSocketFactory sslSocketFactory = getSSLSocketFactory(trustManager);
+                if (sslSocketFactory != null) {
+                    builder.sslSocketFactory(sslSocketFactory, trustManager);
+                }
             }
         }
 //        builder.addInterceptor(new Interceptor() {
@@ -213,7 +258,20 @@
 //    public <T extends BaseBean> void post(final String action, Map<String, Object> params,
     public void post(final String action, Map<String, Object> params,
                      Observer<ResponseBody> observer) {
-        post(action, params)
+        post(false, action, params, observer);
+    }
+
+    /**
+     * Post请求
+     *
+     * @param isUseAllTrustService 是否使用信任所有证书服务
+     * @param action               请求接口的尾址
+     * @param params               请求参数
+     */
+//    public <T extends BaseBean> void post(final String action, Map<String, Object> params,
+    public void post(boolean isUseAllTrustService, final String action, Map<String, Object> params,
+                     Observer<ResponseBody> observer) {
+        post(isUseAllTrustService, action, params)
                 .subscribeOn(Schedulers.io())
                 .observeOn(AndroidSchedulers.mainThread())
                 .subscribe(observer);
@@ -226,6 +284,16 @@
      * @param params 请求参数
      */
     public Observable<ResponseBody> post(final String action, Map<String, Object> params) {
+        return post(false, action, params);
+    }
+
+    /**
+     * Post请求
+     *
+     * @param action 请求接口的尾址
+     * @param params 请求参数
+     */
+    public Observable<ResponseBody> post(boolean isUseAllTrustService, final String action, Map<String, Object> params) {
         if (params == null) {
             params = new HashMap<>();
         }
@@ -233,7 +301,7 @@
         params.put(Const.language, type); // 1 中文 2 英文 3 法文
         LogUtils.d("post", params.toString());
         headerParams.put("Authorization", "Bearer " + getToken());
-        return service.postResult(action, headerParams, params);
+        return (isUseAllTrustService ? allTrustService : service).postResult(action, headerParams, params);
     }
 
     /**

--
Gitblit v1.7.1