【问题标题】:Okhttp 3.x dynamically add/remove authenticator / interceptorOkhttp 3.x 动态添加/删除验证器/拦截器
【发布时间】:2016-11-08 01:36:21
【问题描述】:

是否可以向现有的Okhttp 实例添加/删除身份验证器和/或拦截器?如果是,怎么做?

【问题讨论】:

  • 好吧,API 解释得很清楚:github.com/square/okhttp/wiki/… 它展示了如何在 okhttp 实例创建期间添加拦截器。但是我找不到在不创建新实例的情况下添加它的方法。

标签: java interceptor okhttp authenticator


【解决方案1】:

不,这是不可能的。

但是,您可以从现有客户端创建构建器,并对其进行更改。这将共享调度程序、连接池等。

OkHttpClient.Builder clientBuilder = client1.newBuilder();
clientBuilder.networkInterceptors().add(0, serviceInterceptor);
OkHttpClient client2 = clientBuilder.build();

在javadochttps://square.github.io/okhttp/3.x/okhttp/okhttp3/OkHttpClient.html中有一个调整客户端超时的例子

【讨论】:

  • 问题是我通常通过依赖注入将 okhttp 创建为单个实例对象,因此每次添加/删除拦截器时都无法将单个实例“交换”为另一个实例。
  • 我猜 OP 指的是“一个现有的 Okhttp 实例”
  • 它可能不适合你,但它就是答案。抱歉不适合
猜你喜欢
  • 1970-01-01
  • 2015-11-19
  • 2018-08-11
  • 2016-08-01
  • 2020-09-18
  • 2019-11-24
  • 2023-03-22
  • 1970-01-01
  • 2015-11-18
相关资源
最近更新 更多