Sí, puede pasarlos en tiempo de ejecución. De hecho, casi exactamente como lo escribió. Esto estaría en su clase de interfaz API, llamada, por ejemplo, SecretApiInterface.java
public interface SecretApiInterface {
@GET("/secret_things")
SecretThing.List getSecretThings(@Header("Authorization") String token)
}
Luego, pasa los parámetros a esta interfaz desde su solicitud, algo así: (este archivo sería, por ejemplo, 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());
}
}
Dónde Somehow.Magically.getToken()
hay una llamada a un método que devuelve un token, depende de usted dónde y cómo lo defina.
Por supuesto, puede tener más de una @Header("Blah") String blah
anotación en la implementación de la interfaz, ¡como en su caso!
También lo encontré confuso, la documentación dice claramente que reemplaza el encabezado, ¡pero NO LO HACE !
De hecho, se agrega como con la @Headers("hardcoded_string_of_liited_use")
anotación
Espero que esto ayude ;)