Unser Team hat sich für Retrofit 2.0 entschieden und ich mache einige erste Untersuchungen dazu. Ich bin ein Neuling in dieser Bibliothek.
Ich frage mich, wie ich interceptor
benutzerdefinierte Header über Retrofits 2.0 in unserer Android-App hinzufügen kann . Es gibt viele Tutorials über die Verwendung von interceptor
Header in Retrofit 1.x hinzufügen, aber da die APIs viel in der letzten Version geändert haben, ich bin nicht sicher , wie diese Methoden in der neuen Version anzupassen. Außerdem hat Retrofit seine neue Dokumentation noch nicht aktualisiert.
Wie soll ich beispielsweise in den folgenden Codes die Interceptor
Klasse implementieren , um zusätzliche Header hinzuzufügen? Was genau ist das undokumentierte Chain
Objekt ? Wann wird der intercept()
angerufen?
OkHttpClient client = new OkHttpClient();
client.interceptors().add(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Response response = chain.proceed(chain.request());
// How to add extra headers?
return response;
}
});
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_API_URL)
.client(client)
.addConverterFactory(GsonConverterFactory.create())
.build();
/
und dass Ihre API-URLs nicht (stuff/post/whatever
)Antworten:
Überprüfen Sie dies heraus.
Kotlin
quelle
intercept()
wird also jedes Mal ausgelöst, wenn eine Anfrage von der Anwendung gesendet wird? Können wir die Zwischenantwort für die Umleitung abfangen oder erhalten wir nur die endgültige Antwort?client.interceptors()
. Das sieht aus wienew OkHttpClient.Builder().addInterceptor(<Your Interceptor>).build()
Eine weitere Alternative zur akzeptierten Antwort
quelle
request.newBuilder().headers(moreHeaders).build()
werden die ursprünglichen Header behalten?quelle
Sie können Header mit Interceptors mit den darin integrierten Methoden verwenden
quelle
final Context context
in der Liste der Parameter.context
, weil dies Geschäftslogik ist.