Ich verwende die Retrofit-Bibliothek von Square für kurzlebige Netzwerkanrufe. Es gibt ein paar Daten, die ich bei jeder Anfrage als @Query
params. Wie so:Gibt es eine Möglichkeit, einen Basisanforderungs-Parameter festzulegen, der in jede mit der Retrofit-Bibliothek von Square erstellte Anfrage aufgenommen wird?
@GET("/thingOne.php")
void thingOne(
@Query("app_version") String appVersion,
@Query("device_type") String deviceType,
Callback<Map<String,Object>> callback
);
@GET("/thingTwo.php")
void thingTwo(
@Query("app_version") String appVersion,
@Query("device_type") String deviceType,
Callback<Map<String,Object>> callback
);
Es ist umständlich zu haben appVersion
und deviceType
für jeden einzelnen Endpunkt in den Interface
skizzierte zu definieren. Gibt es eine Möglichkeit, einen Basissatz von Parametern festzulegen, der bei jeder Anfrage enthalten sein sollte? Etwas ähnliches wie wir einen gemeinsamen Authorization Header
setzen?
RestAdapter restAdapter = new RestAdapter.Builder()
.setServer("...")
.setRequestHeaders(new RequestHeaders() {
@Override
public List<Header> get() {
List<Header> headers = new ArrayList<Header>();
Header authHeader = new Header(
"Authorization", "Bearer " + token);
headers.add(authHeader);
}
return headers;
}
})
.build();
this.service = restAdapter.create(ClientInterface.class);
ist [diese] (http://developer.android.com/reference/org/apache /http/HttpRequestInterceptor.html) wovon redest du? Ich kann anscheinend keinen Hinweis auf eine Klasse mit dem Namen RequestInterceptor finden. Oder zu RequestFacade. Und RestAdapter hat keine Methode 'setRequestInterceptor'. Können Sie bitte weitere Einzelheiten angeben? –
Sie müssen eine ältere Version von Retrofit haben. Wenn Sie es auf Version 1.1.1 aktualisieren, sollten Sie sie sehen. http://square.github.io/retrofit/javadoc/retrofit/RequestInterceptor.html – Erich
@ kdubb: Wie mache ich das für Body? Ich habe einen POST, der eine Json-Payload akzeptiert. Vielen Dank! – dannyroa