Middle+
Come modificare tutte le richieste nella libreria Retrofit?
sobes.tech AI
Risposta dell'AI
Interceptor. Viene aggiunto all'OkHttpClient utilizzato da Retrofit. L'interceptor può modificare la richiesta prima di inviarla e la risposta prima di elaborarla.
interface Interceptor {
fun intercept(chain: Interceptor.Chain): Response
}
Crea la tua implementazione di Interceptor e aggiungila a OkHttpClient.Builder:
class MyChangingInterceptor : Interceptor {
override fun intercept(chain: Interceptor.Chain): Response {
val originalRequest = chain.request()
val newRequest = originalRequest.newBuilder()
// Esempio: aggiungi un'intestazione
.addHeader("X-Custom-Header", "SomeValue")
// Esempio: modifica l'URL
// .url("https://new.api.com" + originalRequest.url.encodedPath)
// Esempio: modifica il metodo (se necessario)
// .method("POST", originalRequest.body)
.build()
return chain.proceed(newRequest)
}
}
Aggiungi l'interceptor a OkHttpClient:
val client = OkHttpClient.Builder()
.addInterceptor(MyChangingInterceptor())
// Puoi aggiungere più interceptor
// .addInterceptor(AnotherInterceptor())
.build()
Usa l'OkHttpClient creato quando crei l'istanza di Retrofit:
val retrofit = Retrofit.Builder()
.baseUrl("https://your.api.com/")
.client(client)
.addConverterFactory(GsonConverterFactory.create())
.build()