Как обновить Interceptor в OkHttp при использовании Retrofit?
@Provides
@Singleton
OkHttpClient provideOkhttpClient(Cache cache) {
return new OkHttpClient.Builder()
.cache(cache)
.addInterceptor(new AddCookiesInterceptor(mApplication))
.addInterceptor(new ReceivedCookiesInterceptor(mApplication))
.addInterceptor(provideHeaderTokenInterceptor(mApplication))
.addInterceptor(provideHttpLoggingInterceptor())
.build();
}
@Provides
@Singleton
Retrofit provideRetrofit(OkHttpClient okHttpClient) {
return new Retrofit.Builder()
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.baseUrl(mBaseUrl)
.client(okHttpClient)
.build();
}
@Provides
HeaderTokenInterceptor provideHeaderTokenInterceptor(Context context) {
String token = Prefs.load(context, Prefs.PREFS_TOKEN);
if (token != null && !token.isEmpty()) {
return new HeaderTokenInterceptor(AppConstants.TOKEN_JWT + token);
} else {
return new HeaderTokenInterceptor("");
}
}
Использую provideHeaderTokenInterceptor для добавления токена при выполнении запросов. Но вот к примеру делаю авторизацию без токена, в ответе получаю токен. Сохраняю токен. Но при запросах он не используется так как provideHeaderTokenInterceptor больше не вызывается а используется существующий. Как можно исправить?
Сейчас помогает перезапуск приложения