我知道在整个应用程序中使用单个OkHttpClient实例是最佳做法。但我遇到了TrustKit,我需要实现下一个代码:
OkHttpClient.Builder builder = new OkHttpClient().newBuilder();
URL url = new URL("https://www.url.com");
String serverHostname = url.getHost();
builder.sslSocketFactory(TrustKit.getInstance().getSSLSocketFactory(serverHostname),
TrustKit.getInstance().getTrustManager(serverHostname)).build();
然后我意识到,正确的方法是每个域都有一个实例。目前我必须实现cert pinning,我在我的应用程序内部有多个域,我可以获取我的应用程序所需的信息。
所以问题是:当您尝试实例化OkHttpClient时,如果您有多个域,最佳做法是什么?每个域一个实例?
答案 0 :(得分:0)
正如CommonsWare所说,
您的特定“每个域一个实例”限制来自 你使用TrustKit-Android。
如果您不需要为每个域执行特定任务,那么最好有一个OkHttpClient实例。否则应用此solution为每个客户端创建一个公共ConnectionPool。
我最终使用了okhttp3的cert pinning,所以我没有代码可以分享,遗憾地实现了最后的解决方案。