2016-07-06 85 views
1

是否可以向现有的Okhttp实例添加/删除认证者和/或拦截器?如果是,如何?Okhttp 3.x动态地添加/删除认证者/拦截者

+1

嗯示例,API是相当说明:https://github.com/square/okhttp/wiki /拦截器#拦截器应用程序 它显示了如何在okhttp实例创建期间添加拦截器。但是我无法找到一种方法来在未创建新实例的情况下添加它。 –

回答

2

不,这是不可能的。

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

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

有用于调节客户端的超时在Javadoc https://square.github.io/okhttp/3.x/okhttp/okhttp3/OkHttpClient.html

+0

问题是我通常通过依赖注入将okhttp创建为单个实例对象,因此每次添加/删除拦截器时都无法将单个实例与另一个“交换”。 –

+0

我猜OP是指“一个现有的Okhttp实例” – Onheiron

+0

它可能不适合你,但它是答案。对不起,它不适合 –