Синхронный RxJava запрос
У меня есть OkHttp Interceptor, который добавляет headers к запросам. Проблема в том, что он делает это асинхронно(использую RxJava2) и запрос уходить до модификации Interceptor. Код Interceptor:
class AddCookiesInterceptor: Interceptor {
@Inject
lateinit var cookiesDao: CookiesDao
init {
App.getAppComponent().inject(this)
}
@SuppressLint("CheckResult")
override fun intercept(chain: Interceptor.Chain): Response {
val builder = chain.request().newBuilder()
cookiesDao.getAll()
.subscribe { cookies ->
builder.addHeader("Cookie", "JWT=" + cookies.jwt)
}
return chain.proceed(builder.build())
}
}
Пробовал делать cookiesDao.getAll().blockingFirst(), но это не помогает.
Метод Dao возвращает Observable<Cookie>, где Cookie - data class
Ответы (1 шт):
Автор решения: ЮрийСПб
→ Ссылка
CookiesDao, наверное, из библиотеки Room? Коли так, то просто сделайте в Dao классе метод getAll который не Observable возвращает, а просто Cookie - так вам не нужен будет Rx и не надо будет выяснять почему blockingFirst не работает, хотя и должен, по идее