Ja, Sie können sie zur Laufzeit übergeben. In der Tat ziemlich genau so, wie Sie es abgetippt haben. Dies wäre in Ihrer API-Schnittstellenklasse mit dem Namen SecretApiInterface.java
public interface SecretApiInterface {
@GET("/secret_things")
SecretThing.List getSecretThings(@Header("Authorization") String token)
}
Dann übergeben Sie die Parameter aus Ihrer Anfrage an diese Schnittstelle, ungefähr so : (Diese Datei wäre zum Beispiel SecretThingRequest.java )
public class SecretThingRequest extends RetrofitSpiceRequest<SecretThing.List, SecretApiInteface>{
private String token;
public SecretThingRequest(String token) {
super(SecretThing.List.class, SecretApiInterface.class);
this.token = token;
}
@Override
public SecretThing.List loadDataFromNetwork() {
SecretApiInterface service = getService();
return service.getSecretThings(Somehow.Magically.getToken());
}
}
Wo Somehow.Magically.getToken()
ein Methodenaufruf ein Token zurückgibt, liegt es an Ihnen, wo und wie Sie es definieren.
Sie können natürlich mehr als eine @Header("Blah") String blah
Anmerkung in der Schnittstellenimplementierung haben, wie in Ihrem Fall!
Ich fand es zu verwirrend, die Dokumentation deutlich sagt , es ersetzt die Header, aber es DOES NOT !
Es wird tatsächlich wie bei einer @Headers("hardcoded_string_of_liited_use")
Anmerkung hinzugefügt
Hoffe das hilft ;)