java.lang.IllegalStateException:无法在AndroidPlatform sslSocketFactory上提取信任管理器

时间:2019-03-26 07:22:38

标签: java android sockets

在我的应用程序中,我集成了两个库,即聊天和视频调用...问题是当我先打开视频库时,然后聊天和视频调用库都可以正常工作,但是当我先打开聊天库时,然后打开视频,这会导致异常...我认为默认的trustmanger套接字存在问题。

我在视频通话库中用于创建sslcontext的示例代码

trustManagers = new 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];
                   }
                }
            };

            try {

                sslContext = SSLContext.getInstance("TLS");
                sslContext.init(null, trustManagers, null);
            } catch (NoSuchAlgorithmException | KeyManagementException e) {
                e.printStackTrace();
            }

我得到的例外:     java.lang.IllegalStateException:无法在AndroidPlatform上提取信任管理器,sslSocketFactory为org.conscrypt.OpenSSLSocketFactoryImpl类。请帮助任何一个人。

1 个答案:

答案 0 :(得分:1)

在我的情况下,当我以这种方式使用https://stackoverflow.com/a/50264472/2914140时,它发生在模拟器API 16上:

val sslcontext: SSLContext = SSLContext.getInstance("TLSv1.2")
sslcontext.init(null, null, null)
val tlsSocketFactory = TLSSocketFactory()

val okHttpClient = OkHttpClient().newBuilder()
    .sslSocketFactory(tlsSocketFactory)
    .build()

当我向sslSocketFactory方法中添加trustManager参数时,该异常消失。但是SSL连接问题不会消失。