2016-06-07 2 views
2

У меня есть сценарий, в котором я добавляю перехватчик, содержащий AuthorizationString в заголовке, чтобы вернуть token из API. Когда я возвращаю токен, я хочу добавить новый перехватчик, который добавит полученный токен в заголовок всех последующих запросов.Добавление и удаление перехватчиков

Как удалить предыдущий перехватчик, содержащий токен Authorization, так как он больше не нужен?

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

ответ

3

Вам просто нужно создать новый OkHttpClient.Builder, а затем изменить список. Я думаю, что отличие от вашего кода заключается в том, что вам нужно использовать новый клиент, который вы только что создали для следующего запроса.

OkHttpClient client = ...; 

OkHttpClient.Builder b = client.newBuilder(); 
b.networkInterceptors().removeIf(MyInterceptor.class::isInstance); 
client2 = b.build(); 

Это код Java 8, но вы можете изменить removeIf для Java 7, например. перебирать и добавлять все, кроме вашего перехватчика, в новый список.

Смежные вопросы