наконец, и после примерно 10 часов поиска и прочтения некоторых статей я решил свою проблему: D
УВЕДОМЛЕНИЕ!
не нужно также передавать свой токен ответа самостоятельно нет необходимости связывать зависимость (в данном случае токен ответа) в AppComponent, но если вы хотите сделать это, вы можете использовать @ Component.Builder или @ Component.Factory, чтобы вы могли использовать эту полезную статью: Dagger2: @ Component.Factory и @ SubComponent.Factory
Но для решения проблемы:
сначала следует добавить эту зависимость в файл app.gradle:
implementation 'com.github.franmontiel:PersistentCookieJar:v1.0.1'
, а затем предоставить экземпляр PersistentCookieJar в классе appMoule и перейдите к нашему OkHttpClient экземпляру:
@Singleton
@Provides
PersistentCookieJar ProvideCookieJar(Context context) {
return new PersistentCookieJar(new SetCookieCache(),
new SharedPrefsCookiePersistor(context));
}
@Singleton
@Provides
OkHttpClient.Builder provideOkHttp(HttpLoggingInterceptor interceptor,
PersistentCookieJar persistentCookieJar) {
final OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
httpClient.connectTimeout(8, TimeUnit.SECONDS);
httpClient.readTimeout(8, TimeUnit.SECONDS);
httpClient.callTimeout(8, TimeUnit.SECONDS);
httpClient.cookieJar(persistentCookieJar);
httpClient.addInterceptor(interceptor);
return httpClient;
}
не забудьте предоставить Context, который необходим для создания экземпляра PersistentCookieJar:
@Provides
@Singleton
Context provideContext(Application application) {
return application;
}
и в вашем классе Appication должны быть привязаны класс вашего приложения:
DaggerAppComponent.builder()
.application(this)
.build()
.inject(this);
, и ваш AppComponent должен выглядеть так:
@Singleton
@Component(modules = {AndroidInjectionModule.class, ActivityBuilder.class,
AppModule.class, ViewModelFactoryModule.class})
public interface AppComponent {
@Component.Builder
interface Builder {
@BindsInstance
Builder application(Application application);
AppComponent build();
}
void inject(App app);
}
OK, все готово! Теперь ваш запрос содержит cook ie и успешно может получить ответ сервера:)