Tak, możesz je przekazać w czasie wykonywania. Prawdę mówiąc, prawie dokładnie tak, jak to wpisałeś. Byłoby to w twojej klasie interfejsu API, o nazwie powiedz SecretApiInterface.java
public interface SecretApiInterface {
@GET("/secret_things")
SecretThing.List getSecretThings(@Header("Authorization") String token)
}
Następnie przekazujesz parametry do tego interfejsu ze swojego żądania, coś w tym stylu: (ten plik będzie na przykład 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());
}
}
Gdzie Somehow.Magically.getToken()
jest wywołanie metody, która zwraca token, od Ciebie zależy, gdzie i jak ją zdefiniujesz.
Oczywiście możesz mieć więcej niż jedną @Header("Blah") String blah
adnotację w implementacji interfejsu, tak jak w twoim przypadku!
Wydało mi się to również zagmatwane, dokumentacja wyraźnie mówi, że zastępuje nagłówek, ale NIE !
W rzeczywistości jest dodawany jak w przypadku @Headers("hardcoded_string_of_liited_use")
adnotacji
Mam nadzieję że to pomoże ;)