Назад к вопросам
Middle+
76
questionbank
Как изменить все запросы в библиотеке Ретрофит?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Перехватчик (Interceptor). Добавляется к OkHttpClient, который используется Retrofit'ом. Перехватчик может изменять запрос перед отправкой и ответ перед обработкой.
interface Interceptor {
fun intercept(chain: Interceptor.Chain): Response
}
Создать свою реализацию Interceptor и добавить ее в OkHttpClient.Builder:
class MyChangingInterceptor : Interceptor {
override fun intercept(chain: Interceptor.Chain): Response {
val originalRequest = chain.request()
val newRequest = originalRequest.newBuilder()
// Пример: добавить заголовок
.addHeader("X-Custom-Header", "SomeValue")
// Пример: изменить URL
// .url("https://new.api.com" + originalRequest.url.encodedPath)
// Пример: изменить метод (если нужно)
// .method("POST", originalRequest.body)
.build()
return chain.proceed(newRequest)
}
}
Добавить перехватчик в OkHttpClient:
val client = OkHttpClient.Builder()
.addInterceptor(MyChangingInterceptor())
// Можно добавить несколько перехватчиков
// .addInterceptor(AnotherInterceptor())
.build()
Использовать созданный OkHttpClient при создании экземпляра Retrofit:
val retrofit = Retrofit.Builder()
.baseUrl("https://your.api.com/")
.client(client)
.addConverterFactory(GsonConverterFactory.create())
.build()