Sobes.tech
Middle+

¿Cómo cambiar todas las solicitudes en la biblioteca Retrofit?

sobes.tech AI

Respuesta de la IA

Interceptor. Se añade al OkHttpClient que utiliza Retrofit. El interceptor puede modificar la solicitud antes de enviarla y la respuesta antes de procesarla.

interface Interceptor {
    fun intercept(chain: Interceptor.Chain): Response
}

Crea tu propia implementación de Interceptor y añádela a OkHttpClient.Builder:

class MyChangingInterceptor : Interceptor {
    override fun intercept(chain: Interceptor.Chain): Response {
        val originalRequest = chain.request()
        val newRequest = originalRequest.newBuilder()
            // Ejemplo: añadir un encabezado
            .addHeader("X-Custom-Header", "SomeValue")
            // Ejemplo: cambiar la URL
            // .url("https://new.api.com" + originalRequest.url.encodedPath)
            // Ejemplo: cambiar el método (si es necesario)
            // .method("POST", originalRequest.body)
            .build()
        return chain.proceed(newRequest)
    }
}

Añade el interceptor a OkHttpClient:

val client = OkHttpClient.Builder()
    .addInterceptor(MyChangingInterceptor())
    // Puedes añadir varios interceptores
    // .addInterceptor(AnotherInterceptor())
    .build()

Usa el OkHttpClient creado al crear la instancia de Retrofit:

val retrofit = Retrofit.Builder()
    .baseUrl("https://your.api.com/")
    .client(client)
    .addConverterFactory(GsonConverterFactory.create())
    .build()