Sì, puoi passarli in runtime. È un dato di fatto, più o meno esattamente come l'hai digitato. Questo sarebbe nella tua classe di interfaccia API, chiamata ad esempio SecretApiInterface.java
public interface SecretApiInterface {
@GET("/secret_things")
SecretThing.List getSecretThings(@Header("Authorization") String token)
}
Quindi passi i parametri a questa interfaccia dalla tua richiesta, qualcosa del genere: (questo file sarebbe ad esempio 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());
}
}
Dov'è Somehow.Magically.getToken()
una chiamata al metodo che restituisce un token, dipende da te dove e come lo definisci.
Ovviamente puoi avere più di una @Header("Blah") String blah
annotazione nell'implementazione dell'interfaccia, come nel tuo caso!
Anch'io l'ho trovato confuso, la documentazione dice chiaramente che sostituisce l'intestazione, ma NON lo fa !
In effetti è aggiunto come con@Headers("hardcoded_string_of_liited_use")
annotazione
Spero che sia di aiuto ;)