java - java.lang.IllegalStateException:无法在 AndroidPlatform、sslSocketFactory 上提取信任管理器
问题描述
在我的应用程序中,我集成了两个库,即聊天和视频通话......问题是当我先打开视频库时,聊天和视频通话库都可以正常工作,但是当我先打开聊天库,然后打开视频,它导致异常...我认为这是具有默认信任管理器的套接字的问题..
我在视频通话库中使用的示例代码来创建 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: Unable to extract the trust manager on AndroidPlatform, sslSocketFactory is class org.conscrypt.OpenSSLSocketFactoryImpl ...请帮助任何人。
解决方案
就我而言,当我以这种方式使用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()
当我向方法添加 trustManager 参数时sslSocketFactory
,异常消失了。但是 SSL 连接的问题并没有消失。
推荐阅读
- vbscript - VBS 检查outlook 约会的参加者,并为那些没有回答的人发送电子邮件
- excel - 在最后一行 VBA 问题后复制并粘贴
- sql - SQL ETL 批处理过程中的连接索引
- c++ - 默认赋值运算符检查自赋值
- python - 导入tensorflow(刚安装)python 3.7时出错
- typescript - 在装饰器中使用泛型类型
- delphi - RAD Studio 10.2.3 Jedi JVCL 安装问题
- c++ - 什么可以用作 C/C++ 中#define 指令的标识符
- filehelpers - 如何正确调用 FileHelpers.RecordTypeSelector?
- javascript - IntersectionObserver 和 ajax 加载的内容