diff --git a/app/build.gradle b/app/build.gradle index fde8d6b..68d59e8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,7 +9,7 @@ android { defaultConfig { applicationId "qianmu.container" - minSdkVersion 22 + minSdkVersion 24 targetSdkVersion 30 versionCode 6 versionName "V2.0.8.2" diff --git a/app/src/main/java/qianmu/container/http/retrofit/RetrofitUtil.java b/app/src/main/java/qianmu/container/http/retrofit/RetrofitUtil.java index 7dbf264..cf13b95 100644 --- a/app/src/main/java/qianmu/container/http/retrofit/RetrofitUtil.java +++ b/app/src/main/java/qianmu/container/http/retrofit/RetrofitUtil.java @@ -36,16 +36,41 @@ public class RetrofitUtil { private static OkHttpClient initOkHttpClient(int timeout) { try { + + // 创建一个信任所有证书的 TrustManager + TrustManager[] trustAllCerts = new TrustManager[]{ + new X509TrustManager() { + @Override + public void checkClientTrusted(X509Certificate[] chain, String authType) {} + + @Override + public void checkServerTrusted(X509Certificate[] chain, String authType) {} + + @Override + public X509Certificate[] getAcceptedIssuers() { + return new X509Certificate[0]; + } + } + }; + + // 初始化 SSLContext + SSLContext sslContext = SSLContext.getInstance("TLS"); + sslContext.init(null, trustAllCerts, new SecureRandom()); + + OkHttpClient.Builder builder = new OkHttpClient.Builder(); + builder.readTimeout(timeout, TimeUnit.SECONDS); + builder.writeTimeout(timeout, TimeUnit.SECONDS); + builder.connectTimeout(timeout, TimeUnit.SECONDS); + builder.sslSocketFactory(sslContext.getSocketFactory(), (X509TrustManager) trustAllCerts[0]); + builder.hostnameVerifier(SSLSocketClient.getHostnameVerifier()); + return builder.build(); + } catch (Throwable t) { + LoggerUtil.e("initOkHttpClient", StringUtil.getThrowableStr(t)); return new OkHttpClient.Builder().sslSocketFactory(SSLSocketClient.getSSLSocketFactory(), SSLSocketClient.getX509TrustManager()) .retryOnConnectionFailure(true) .hostnameVerifier(SSLSocketClient.getHostnameVerifier()) .connectTimeout(timeout, TimeUnit.SECONDS).readTimeout(timeout, TimeUnit.SECONDS) .writeTimeout(timeout, TimeUnit.SECONDS).build(); - } catch (Throwable t) { - LoggerUtil.e("initOkHttpClient", StringUtil.getThrowableStr(t)); - return new OkHttpClient.Builder().connectTimeout(timeout, TimeUnit.SECONDS) - .retryOnConnectionFailure(true).addInterceptor(new BaseInterceptor()) - .readTimeout(timeout, TimeUnit.SECONDS).writeTimeout(timeout, TimeUnit.SECONDS).build(); } }