Die Pfadersetzung findet nicht innerhalb der Basis-URL des API-Endpunkts statt, sondern nur die relative URL-Zeichenfolge der Methode. Ich gehe davon aus, dass Sie die relativen URLs nicht bei jeder Ihrer Interface-Methodendeklarationen voranstellen möchten.
Während schlecht formuliert, die javadoc von Endpoint
Staaten:
Anrufer sollte immer die Instanz für die neuesten Werte konsultieren, anstatt die zurückgegebenen Werte Caching.
Dies bedeutet, dass für jede Anfrage die Endpoint
Instanz für den Wert der Basis-URL herangezogen wird.
Sie können eine benutzerdefinierten Endpoint
Implementierung liefern, auf das Sie den API-Schlüssel Wert ändern können:
public final class FooEndpoint implements Endpoint {
private static final String BASE = "http://192.168.1.64:5050/api/";
private String url;
public void setApiKey(String apiKey) {
url = BASE + apiKey;
}
@Override public String getName() {
return "default";
}
@Override public String getUrl() {
if (url == null) throw new IllegalStateException("API key not set.");
return url;
}
}
Haben Sie etwas dagegen, einen Blick auf meinen Versuch [mehrere API-Endpunkte zu adressieren] (http://stackoverflow.com/questions/27399633/how-to-address-multiple-api-end-points-using-retrofit)) – JJD