2016-07-11 11 views
2

Ich möchte auszuführen Anfrage mit Retrofit2 und RxJavaWie Authorization-Header mit Retrofit2 + RxJava

public static Observable<Post> getPostsAround(Location location, int offset, int limit) { 
    if(api==null) { 
     new RestService(); //initialize API in constructor 
    } 
    return api.getPostsAround(location.getLatitude(),location.getLongitude(),offset,limit) 
      .flatMapIterable(posts -> posts); //transform Observable<List<Post>> to Observable<Post> which emits posts onNext 
} 

Ich versuchte @Headers (hinzufügen "Authorization: Code) Anmerkung, aber ich weiß nicht, wie sich ändern" Code "in Laufzeit.

+0

Was Sie meinen, wie man "Code" in der Laufzeit ändert. Sie können Interceptors zu Okhttp hinzufügen und als Client von Retrofit verwenden. –

+0

@ YasinKaçmaz Ich meine Access Token von OAuth 2 –

Antwort

4

Ich habe eine Antwort gefunden: Ein Anfrage-Header kann dynamisch mit der Annotation @Header aktualisiert werden. Ein entsprechender Parameter muss dem @Header zur Verfügung gestellt werden. Wenn der Wert null ist, wird der Header sein Wenn nicht, wird toString für den Wert aufgerufen und das Ergebnis verwendet.

@GET("user") 
Call<User> getUser(@Header("Authorization") String authorization)