Okhttp 3.x 动态添加/删除验证器/拦截器
Posted
技术标签:
【中文标题】Okhttp 3.x 动态添加/删除验证器/拦截器【英文标题】:Okhttp 3.x dynamically add/remove authenticator / interceptor 【发布时间】:2016-11-08 01:36:21 【问题描述】:是否可以向现有的Okhttp
实例添加/删除身份验证器和/或拦截器?如果是,怎么做?
【问题讨论】:
好吧,API 解释得很清楚:github.com/square/okhttp/wiki/… 它展示了如何在 okhttp 实例创建期间添加拦截器。但是我找不到在不创建新实例的情况下添加它的方法。 【参考方案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 实例” 它可能不适合你,但它就是答案。抱歉不适合以上是关于Okhttp 3.x 动态添加/删除验证器/拦截器的主要内容,如果未能解决你的问题,请参考以下文章
okhttp添加日志拦截器,上传文件RequestBody.writeTo调用两次