在OkHttp3中,以下[A]已被弃用:
例如,我通过执行以下操作获取一个SSLSocketFactory对象:
使用 getTrustManager() 方法可以返回一个包含客户端应该信任的服务器证书的 TrustManager[] 数组。
现在,由于...
然而,我感觉这不是他们期望我们使用它的方式。所以欢迎任何建议。
谢谢。
sslSocketFactory(SSLSocketFactory sslSocketFactory)
它被[B]所取代:
sslSocketFactory(SSLSocketFactory sslSocketFactory, X509TrustManager trustManager).
以下是我的问题:
X509TrustManager在[B]中的用途是什么?
与创建SSLSocketFactory对象时可以指定trustManager相比,使用[B]有哪些优势,而不是使用[A]?
在https://square.github.io/okhttp/3.x/okhttp/okhttp3/OkHttpClient.Builder.html#sslSocketFactory-javax.net.ssl.SSLSocketFactory-中提到,当使用[B]时可以避免反射,能否有人解释一下?
更多信息:
创建SSLSocketFactory对象时,已经可以在其中指定一个trustManager。
sslContext.init(KeyManager[] arg0, TrustManager[] arg1, SecureRandom arg2).
例如,我通过执行以下操作获取一个SSLSocketFactory对象:
public SSLSocketFactory getSSLSocketFactory() {
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(getKeyManager(), getTrustManager(), new SecureRandom());
return sslContext.getSocketFactory();
}
使用 getTrustManager() 方法可以返回一个包含客户端应该信任的服务器证书的 TrustManager[] 数组。
现在,由于...
sslSocketFactory(SSLSocketFactory sslSocketFactory, X509TrustManager trustManager)
他希望我提供一个X509TrustManager对象,我通过以下方式处理:
OkHttpClient okClient = new OkHttpClient.Builder().sslSocketFactory(getSSLSocketFactory(), (X509TrustManager) getTrustManager()[0]).build();
然而,我感觉这不是他们期望我们使用它的方式。所以欢迎任何建议。
谢谢。