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()