Middle+
Hoe wijzig je alle verzoeken in de Retrofit-bibliotheek?
sobes.tech AI
Antwoord van AI
Interceptor. Word toegevoegd aan de OkHttpClient die door Retrofit wordt gebruikt. De interceptor kan het verzoek vóór verzending en het antwoord vóór verwerking wijzigen.
interface Interceptor {
fun intercept(chain: Interceptor.Chain): Response
}
Maak je eigen implementatie van Interceptor en voeg deze toe aan OkHttpClient.Builder:
class MyChangingInterceptor : Interceptor {
override fun intercept(chain: Interceptor.Chain): Response {
val originalRequest = chain.request()
val newRequest = originalRequest.newBuilder()
// Voorbeeld: voeg een header toe
.addHeader("X-Custom-Header", "SomeValue")
// Voorbeeld: wijzig URL
// .url("https://new.api.com" + originalRequest.url.encodedPath)
// Voorbeeld: wijzig methode (indien nodig)
// .method("POST", originalRequest.body)
.build()
return chain.proceed(newRequest)
}
}
Voeg de interceptor toe aan OkHttpClient:
val client = OkHttpClient.Builder()
.addInterceptor(MyChangingInterceptor())
// Je kunt meerdere interceptors toevoegen
// .addInterceptor(AnotherInterceptor())
.build()
Gebruik de aangemaakte OkHttpClient bij het maken van de Retrofit-instantie:
val retrofit = Retrofit.Builder()
.baseUrl("https://your.api.com/")
.client(client)
.addConverterFactory(GsonConverterFactory.create())
.build()