Middle+
Ինչպես փոխել բոլոր հարցումները Retrofit գրադարանում?
sobes.tech AI
Պատասխան AI-ից
Interceptor. Հավելվում է OkHttpClient-ին, որը օգտագործվում է Retrofit-ի կողմից։ Interceptor-ը կարող է փոփոխել հարցումը ուղարկելուց առաջ և պատասխանն՝ մշակելուց առաջ։
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()