Okhttp 3.x 动态添加/删除验证器/拦截器

Mar*_*ano 7 java authenticator interceptor okhttp

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

Yur*_*mke 5

不,这是不可能的。

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

OkHttpClient.Builder clientBuilder = client1.newBuilder();
clientBuilder.networkInterceptors().add(0, serviceInterceptor);
OkHttpClient client2 = clientBuilder.build();
Run Code Online (Sandbox Code Playgroud)

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

  • 问题是我通常通过依赖注入将 okhttp 创建为单个实例对象,因此每次添加/删除拦截器时都不可能将单个实例与另一个实例“交换”。 (2认同)