Middle+
Como alterar todas as requisições na biblioteca Retrofit?
sobes.tech IA
Resposta da IA
Interceptor. Adicionado ao OkHttpClient usado pelo Retrofit. O interceptor pode modificar a solicitação antes de enviá-la e a resposta antes de processá-la.
interface Interceptor {
fun intercept(chain: Interceptor.Chain): Response
}
Crie sua própria implementação de Interceptor e adicione-a ao OkHttpClient.Builder:
class MyChangingInterceptor : Interceptor {
override fun intercept(chain: Interceptor.Chain): Response {
val originalRequest = chain.request()
val newRequest = originalRequest.newBuilder()
// Exemplo: adicionar um cabeçalho
.addHeader("X-Custom-Header", "SomeValue")
// Exemplo: alterar a URL
// .url("https://new.api.com" + originalRequest.url.encodedPath)
// Exemplo: alterar o método (se necessário)
// .method("POST", originalRequest.body)
.build()
return chain.proceed(newRequest)
}
}
Adicione o interceptor ao OkHttpClient:
val client = OkHttpClient.Builder()
.addInterceptor(MyChangingInterceptor())
// Você pode adicionar vários interceptors
// .addInterceptor(AnotherInterceptor())
.build()
Use o OkHttpClient criado ao criar a instância de Retrofit:
val retrofit = Retrofit.Builder()
.baseUrl("https://your.api.com/")
.client(client)
.addConverterFactory(GsonConverterFactory.create())
.build()