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