Ich möchte immer einen Parameter zu meinen Retrofit-Aufrufen hinzufügen. Bei Werten, die ich hart Code kann ich einfachRetrofit: Laufzeitparameter zur Schnittstelle hinzufügen?
@POST("/myApi?myParam=myValue")
verwenden können, aber was, wenn ich android.os.Build.MODEL
angehängt werden soll?
@POST("/myApi?machineName="+ Build.MODEL)
funktioniert nicht. Es wäre nützlich, diesen Teil des Netzwerkaufrufs vom Implementierungscode wegzulösen.
EDIT
I unter Verwendung eines RequestInterceptor
Build.MODEL
an alle meine api Anrufe hinzufügen können. Wie auch immer, es entgeht mir immer noch, wie ich es selektiv nur zu einigen meiner API-Anrufe hinzufügen kann, während ich immer noch denselben RestAdapter
benutze.
EDIT 2
den Titel behoben, der alle Arten von falsch war.
EDIT 3
Aktuelle Umsetzung:
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint("myapi")
.setRequestInterceptor(new RequestInterceptor() {
@Override
public void intercept(RequestInterceptor.RequestFacade request) {
request.addQueryParam("machineName", Build.MODEL);
}
})
.build();
API_SERVICE = restAdapter.create(ApiService.class);
Ich benutze derzeit einen 'RequestInterceptor', um den Parameter zu allen API-Aufrufen hinzuzufügen, ignoriert die API dann die zusätzlichen Parameter für die Aufrufe, wo sie nicht benötigt wurden. Das funktioniert, aber macht den Code weniger klar, weil es nicht möglich ist zu bestimmen, welche Anrufe welche Standardparameter benötigen, also lasse ich diese Frage offen. – GDanger