1 回答

TA貢獻1810條經驗 獲得超4個贊
事實證明,問題是由在 okhttp3 構建器方法中調用 NullPointerException 引起的。確切的代碼在這里:
Caused by: java.lang.NullPointerException: Attempt to get length of null array
at okhttp3.internal.tls.BasicTrustRootIndex.<init>(BasicTrustRootIndex.java:32)
at okhttp3.internal.platform.Platform.buildTrustRootIndex(Platform.java:288)
at okhttp3.internal.platform.AndroidPlatform.buildTrustRootIndex(AndroidPlatform.java:280)
at okhttp3.internal.platform.Platform.buildCertificateChainCleaner(Platform.java:172)
at okhttp3.internal.platform.AndroidPlatform.buildCertificateChainCleaner(AndroidPlatform.java:230)
at okhttp3.internal.tls.CertificateChainCleaner.get(CertificateChainCleaner.java:41)
at okhttp3.OkHttpClient$Builder.sslSocketFactory(OkHttpClient.java:694)
這個問題的原因是我在 Stackoverflow(此處為IE)上遵循了大量示例,這些示例告訴您使用該行構建 x509 TrustManager return null;。
解決方法是簡單地更改一行:
X509TrustManager trustManager = new X509TrustManager() {
public void checkClientTrusted(X509Certificate[] xcs, String string)
throws CertificateException {}
public void checkServerTrusted(X509Certificate[] xcs, String string)
throws CertificateException {}
public X509Certificate[] getAcceptedIssuers() {
//Here
return new X509Certificate[]{};
}
};
.
.
.
這解決了這個問題。
添加回答
舉報