java - Android Retrofit 参数化@Headers

标签 java android annotations retrofit

我正在使用 OAuth,每次发出请求时都需要将 OAuth token 放入我的 header 中。我看到了 @Header 注释,但是有没有办法让它参数化,以便我可以在运行时传入?

这是概念

@Header({Authorization:'OAuth {var}', api_version={var} })

你能在运行时传递它们吗?

@GET("/users")
void getUsers(
    @Header("Authorization") String auth, 
    @Header("X-Api-Version") String version, 
    Callback<User> callback
)

最佳答案

除了使用@Header 参数,我宁愿使用 RequestInterceptor 来更新你的所有请求而不改变你的界面。使用类似的东西:

RestAdapter.Builder builder = new RestAdapter.Builder()
    .setRequestInterceptor(new RequestInterceptor() {
        @Override
        public void intercept(RequestFacade request) {
            request.addHeader("Accept", "application/json;versions=1");
            if (isUserLoggedIn()) {
                request.addHeader("Authorization", getToken());
            }                    
        }
    });

p/s : 如果你使用的是 Retrofit2,你应该使用 Interceptor 而不是 RequestInterceptor

由于 RequestInterceptor 在 Retrofit 2.0 中不再可用

关于java - Android Retrofit 参数化@Headers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18478258/

相关文章:

android - 如何在android中取消按钮onclick时取消下载文件?

C# 属性或特性

java - @NotNull 和@Nullable,与java 注解相矛盾

java - 在为树数据结构创建树类时是否强制使类节点静态

java - 如何访问 Velocity 模板中的静态成员?

java - 将字符串转换为颜色 int

asp.net-mvc - 在 MVC 2 中,如何为 UI 助手模板(不是属性)注释一个类?

java - 如何修复这个随机行走程序代码?

java - java在哪里找文件?

java - 时间选择器 : Create a date object