18034727885
2026-08-20 75612bfbb092c7dd96d034a0db32662e6fd62dc2
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);
    }
    /**