Sobes.tech
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()