Да, вы можете передать их во время выполнения. Собственно говоря, почти так же, как вы это напечатали. Это будет в вашем классе интерфейса API с именем, скажем, SecretApiInterface.java.
public interface SecretApiInterface {
@GET("/secret_things")
SecretThing.List getSecretThings(@Header("Authorization") String token)
}
Затем вы передаете параметры этому интерфейсу из своего запроса, что-то вроде этих строк: (этот файл будет, например, 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());
}
}
Где Somehow.Magically.getToken()
находится вызов метода, который возвращает токен, решать вам, где и как его определить.
Конечно, вы можете иметь более одной @Header("Blah") String blah
аннотации в реализации интерфейса, как и в вашем случае!
Меня это тоже сбивает с толку, в документации четко сказано, что он заменяет заголовок, но НЕТ !
Фактически добавляется как с @Headers("hardcoded_string_of_liited_use")
аннотацией
Надеюсь это поможет ;)