亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

帶有 sslSocketFactory 的 Okhttp.Builder 中的

帶有 sslSocketFactory 的 Okhttp.Builder 中的

弒天下 2023-03-23 15:05:47
我正在處理一個項目,該項目需要利用允許所有證書進行一次調用,每當我嘗試設置 sslSocketFactory 時,我都會收到一個錯誤,指示 ExceptionInInitializerError。我搜索了 SO 并發現了這個問題,但它并沒有為我解決問題;這個 Git 問題也一樣。我的示例代碼如下:   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() {            return null;        }    };    SSLContext sslContext;    SSLSocketFactory sslSocketFactory = null;    try {        sslContext = SSLContext.getInstance("TLS");        sslContext.init(null, new TrustManager[]{trustManager}, null);        sslSocketFactory = sslContext.getSocketFactory();    } catch (Exception e){        e.printStackTrace();    }    OkHttpClient client = new OkHttpClient.Builder().sslSocketFactory(sslSocketFactory,            trustManager).addInterceptor(interceptor).build();當發送的參數全部有效且不為空時,為什么我會收到錯誤消息?
查看完整描述

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[]{};

        }

    };

    .

    .

    .

這解決了這個問題。


查看完整回答
反對 回復 2023-03-23
  • 1 回答
  • 0 關注
  • 417 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號