Android 添加和删除拦截器
我有一个场景,我在标题中添加了一个拦截器,其中包含一个Android 添加和删除拦截器,android,retrofit,okhttp,Android,Retrofit,Okhttp,我有一个场景,我在标题中添加了一个拦截器,其中包含一个授权字符串,以从API中获取令牌。当我得到一个令牌时,我希望添加一个新的拦截器,该拦截器将把收到的令牌添加到所有后续请求的头中 既然不再需要包含授权令牌的前一个拦截器,如何删除它 private void removeAuthorizationInterceptor() { for (Interceptor interceptor : App.getOkHttpClient().newBuilder().networkIntercep
授权
字符串
,以从API中获取令牌
。当我得到一个令牌时,我希望添加一个新的拦截器,该拦截器将把收到的令牌添加到所有后续请求的头中
既然不再需要包含授权
令牌的前一个拦截器,如何删除它
private void removeAuthorizationInterceptor()
{
for (Interceptor interceptor : App.getOkHttpClient().newBuilder().networkInterceptors())
{
// Find the interceptor which has the Authorization token and remove it
}
}
您只需要创建一个新的OkHttpClient.Builder,然后修改列表。我认为与您的代码不同的是,您需要使用刚刚为下一个请求构建的新客户端
OkHttpClient client = ...;
OkHttpClient.Builder b = client.newBuilder();
b.networkInterceptors().removeIf(MyInterceptor.class::isInstance);
client2 = b.build();
这是Java 8代码,但您可以更改Java 7的removeIf,例如,迭代并将除拦截器之外的所有内容添加到新列表中。我在我的上下文中面临相同的问题,我有三个不同的api,只有一个需要使用拦截器(AddHeaderAndOkie),该拦截器添加此api所需的api签名和cookie,其他API不需要此功能,我如何实现此功能