#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 в модифицированную реализацию. Также только один раз. Я добавил код