Как я могу заменить переменную OkHttpClient, реализованную в пользовательском классе приложения?

#android #dagger-2 #okhttp3 #custom-authentication #custom-application

#Android #кинжал-2 #okhttp #пользовательская аутентификация #пользовательское приложение

Вопрос:

Реализация Dagger2 в приложении

Модуль сетевого компонента

     @Provides
    @Singleton
    OkHttpClient provideOkHttpClient() {

        return new OkHttpClient.Builder().addInterceptor(new Interceptor() {
            @Override
            public Response intercept(Chain chain) throws IOException {
                Request.Builder builder = chain.request().newBuilder()
                        .addHeader("Accept", "application/json")
                        .addHeader("Client-Id", Constants.CONFIG.APP_NAME)
                        .addHeader("RE-Phone-Number", phoneNumber)
                        .addHeader("RE-Access-Token", access_token);
                Request request = builder.build();
                return chain.proceed(request);
            }
        }).build();
    }
  

Он вызывается в начале приложения один раз. Мне нужно изменить учетные данные пользователя после их получения.

 @Provides
@Singleton
Retrofit provideRetrofit(GsonConverterFactory gsonConverterFactory,
                         RxJavaCallAdapterFactory rxJavaCallAdapterFactory,
                         OkHttpClient okHttpClient) {
    return new Retrofit.Builder()
            .baseUrl(baseUrl)
            .client(okHttpClient)
            .addConverterFactory(gsonConverterFactory)
            .addCallAdapterFactory(rxJavaCallAdapterFactory)
            .build();
}
  

Модуль компонента Api

 @Module
public class ApiModule {

@Provides
@PerFragment
CompanyService provideCompanyService(Retrofit retrofit){
    return retrofit.create(CompanyService.class);
}
  

}

Комментарии:

1. Где и как phoneNumber access_token объявлены и? Если вы измените их значения, не будет ли следующий запрос использовать обновленное значение?

2. @Michael, OkHttpClient инициализируется в пользовательском классе расширения приложения. И он делает это только один раз. Я внедряю OkHttpClient в модифицированную реализацию. Также только один раз. Я добавил код