|
|
@ -143,32 +143,26 @@ public class MyApplication extends Application { |
|
|
|
|
|
|
|
|
public OkHttpClient createOkHttpClient(Context context) { |
|
|
public OkHttpClient createOkHttpClient(Context context) { |
|
|
try { |
|
|
try { |
|
|
// 1. 创建信任管理器(这里示例为信任所有证书,生产环境需谨慎)
|
|
|
|
|
|
X509TrustManager trustManager = 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]; |
|
|
|
|
|
} |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 获取系统默认信任管理器
|
|
|
|
|
|
TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance( |
|
|
|
|
|
TrustManagerFactory.getDefaultAlgorithm()); |
|
|
|
|
|
trustManagerFactory.init((KeyStore) null); |
|
|
|
|
|
TrustManager[] trustManagers = trustManagerFactory.getTrustManagers(); |
|
|
|
|
|
X509TrustManager trustManager = (X509TrustManager) trustManagers[0]; |
|
|
|
|
|
|
|
|
|
|
|
// 初始化 SSL 上下文
|
|
|
SSLContext sslContext = SSLContext.getInstance("TLS"); |
|
|
SSLContext sslContext = SSLContext.getInstance("TLS"); |
|
|
sslContext.init(null, new TrustManager[]{trustManager}, null); |
|
|
sslContext.init(null, new TrustManager[]{trustManager}, null); |
|
|
javax.net.ssl.SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory(); |
|
|
|
|
|
// 4. 配置 OkHttpClient
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 构建 OkHttpClient(3.x 版本同样需要显式传入 trustManager)
|
|
|
return new OkHttpClient.Builder() |
|
|
return new OkHttpClient.Builder() |
|
|
.readTimeout(10, TimeUnit.SECONDS) |
|
|
|
|
|
.writeTimeout(10, TimeUnit.SECONDS) |
|
|
|
|
|
.connectTimeout(10, TimeUnit.SECONDS) |
|
|
|
|
|
.sslSocketFactory(sslSocketFactory, trustManager) // 同时传入 TrustManager
|
|
|
|
|
|
|
|
|
.sslSocketFactory(sslContext.getSocketFactory(), trustManager) // 关键
|
|
|
|
|
|
.connectTimeout(15, TimeUnit.SECONDS) |
|
|
|
|
|
.readTimeout(15, TimeUnit.SECONDS) |
|
|
|
|
|
.writeTimeout(15, TimeUnit.SECONDS) |
|
|
.build(); |
|
|
.build(); |
|
|
} catch (Exception e) { |
|
|
} catch (Exception e) { |
|
|
throw new RuntimeException(e); |
|
|
|
|
|
|
|
|
throw new RuntimeException("OkHttp 初始化失败", e); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|