Jav*_*per 5 okhttp trustmanager ibm-jre x509trustmanager
任何人都可以帮忙解决这个问题吗?
我还使用OKHTTP3 版本 4.8.1编写HTTP2 客户端。它可以在 Oracle JDK 8 上运行,但不能在 IBM JRE 8 上运行。
错误消息:java.lang.IllegalStateException:无法在 okhttp3.internal.Platform@e85a0ce8 上提取信任管理器,sslSocketFactory 是类 com.ibm.jsse2.SSLSocketFactoryImpl。
谢谢
您依赖于长期弃用的方法
它已被弃用,因为它必须对 JVM 进行大量假设,这会在每次 JVM 更新或跨供应商时中断。您应该使用 X509TrustManager 作为参数来调用该方法
TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(
TrustManagerFactory.getDefaultAlgorithm());
trustManagerFactory.init((KeyStore) null);
TrustManager[] trustManagers = trustManagerFactory.getTrustManagers();
if (trustManagers.length != 1 || !(trustManagers[0] instanceof X509TrustManager)) {
throw new IllegalStateException("Unexpected default trust managers:"
+ Arrays.toString(trustManagers));
}
X509TrustManager trustManager = (X509TrustManager) trustManagers[0];
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, new TrustManager[] { trustManager }, null);
SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
OkHttpClient client = new OkHttpClient.Builder()
.sslSocketFactory(sslSocketFactory, trustManager)
.build();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3191 次 |
| 最近记录: |