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