OkHttpClient 3具有多个域

时间:2017-08-23 19:29:50

标签: android okhttp3 okhttp

我知道在整个应用程序中使用单个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时,如果您有多个域,最佳做法是什么?每个域一个实例?

1 个答案:

答案 0 :(得分:0)

正如CommonsWare所说,

  

您的特定“每个域一个实例”限制来自   你使用TrustKit-Android。

如果您不需要为每个域执行特定任务,那么最好有一个OkHttpClient实例。否则应用此solution为每个客户端创建一个公共ConnectionPool。

我最终使用了okhttp3的cert pinning,所以我没有代码可以分享,遗憾地实现了最后的解决方案。