Sobes.tech
Middle+

Wie ändert man alle Anfragen in der Retrofit-Bibliothek?

sobes.tech KI

Antwort von AI

Interceptor. Wird zum OkHttpClient hinzugefügt, der von Retrofit verwendet wird. Der Interceptor kann die Anfrage vor dem Senden und die Antwort vor der Verarbeitung ändern.

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

Erstellen Sie Ihre eigene Implementierung von Interceptor und fügen Sie sie zu OkHttpClient.Builder hinzu:

class MyChangingInterceptor : Interceptor {
    override fun intercept(chain: Interceptor.Chain): Response {
        val originalRequest = chain.request()
        val newRequest = originalRequest.newBuilder()
            // Beispiel: Header hinzufügen
            .addHeader("X-Custom-Header", "SomeValue")
            // Beispiel: URL ändern
            // .url("https://new.api.com" + originalRequest.url.encodedPath)
            // Beispiel: Methode ändern (falls erforderlich)
            // .method("POST", originalRequest.body)
            .build()
        return chain.proceed(newRequest)
    }
}

Fügen Sie den Interceptor zu OkHttpClient hinzu:

val client = OkHttpClient.Builder()
    .addInterceptor(MyChangingInterceptor())
    // Sie können mehrere Interceptor hinzufügen
    // .addInterceptor(AnotherInterceptor())
    .build()

Verwenden Sie den erstellten OkHttpClient beim Erstellen der Retrofit-Instanz:

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