添加和删​​除拦截器

时间:2016-06-07 23:04:46

标签: android retrofit okhttp

我有一个场景,我在标题中添加了一个包含Authorization String的拦截器,以便从API中获取token。当我收回一个令牌时,我希望添加一个新的拦截器,它将收到的令牌添加到所有后续请求的头部。

如何删除包含Authorization令牌的先前拦截器,因为它不再需要?

private void removeAuthorizationInterceptor()
{
    for (Interceptor interceptor : App.getOkHttpClient().newBuilder().networkInterceptors())
    {
        // Find the interceptor which has the Authorization token and remove it
    }
}

1 个答案:

答案 0 :(得分:4)

您只需要创建一个新的OkHttpClient.Builder,然后改变列表。我认为与您的代码的不同之处在于您需要使用刚刚为下一个请求构建的新客户端。

//showing only pseudocode of callback method
run() {
  while(true) {
  //do calculations
  //calling setText -> updating the view
  }
}

这是Java 8代码,但您可以更改Java 7的removeIf,例如迭代并将除拦截器之外的所有内容添加到新列表中。