Как правильно переопределить модифицированный URL-адрес baseUrl или okhttp.Request внутри okhttp.Interceptor?Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Как правильно переопределить модифицированный URL-адрес baseUrl или okhttp.Request внутри okhttp.Interceptor?

Сообщение Anonymous »

У меня есть ситуация, когда URL-адреса моих запросов должны измениться в зависимости от некоторых условий.
По сути, я создаю свой экземпляр okHttpClient и добавляю к нему перехватчик.
/>Здесь я проверяю, нужно ли мне менять URL-адрес запроса или нет.
Код выглядит следующим образом:

Код: Выделить всё

private val interceptor: Interceptor = Interceptor { chain ->
val request = chain.request()
val originalRequest: Request = chain.request()
val replacedUrl = originalRequest.url.toString().replace(originalRequest.url.host, environment.baseHost).toHttpUrlOrNull()

val newRequest = request
.newBuilder()
.url(replacedUrl ?: originalRequest.url)
.build()

return@Interceptor chain.proceed(newRequest)
}
Этот перехватчик добавляется в okHttpClient и модифицированный экземпляр создается следующим образом:

Код: Выделить всё

private val okHttpClient: OkHttpClient = OkHttpClient
.Builder()
.addInterceptor(interceptor)// the interceptor created above
.let(retrofitInterceptor::configureOkHttp)
// blabla more config
.build()

internal val retrofit: Retrofit = Retrofit.Builder()
.baseUrl(environment.baseUrl)
.client(okHttpClient)
// blabla more config
.build()
Проблема: val replaceUrl, определенный выше, выглядит точно так же (с точки зрения сравнения строк), что и originalRequest .url. Однако, все запросы с замененным URL-адресом завершатся ошибкой с кодом ошибки 400.
Я могу предположить, что даже если строки URL-адреса одинаковы, объекты URL — нет. Я не совсем понимаю, почему новый replaceUrl не работает?
Как я могу правильно переопределить .baseUrl(environment.baseUrl ) Я использовал для создания объекта модификации?

Подробнее здесь: https://stackoverflow.com/questions/791 ... e-okhttp-i
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»