Android的改造参数@Headers [英] Android Retrofit Parameterized @Headers

查看:1122
本文介绍了Android的改造参数@Headers的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用OAuth我需要每次我提出一个请求把OAuth的令牌在我的头。我看 @Header 注释,但有没有办法让它参数,所以我可以在运行时传递?

下面是概念

@Header({授权:OAuth的{VAR}',API_VERSION = {VAR}})

你能在运行时通过他们的?

  @GET(/用户)
无效getUsers(
    @Header(授权)字符串身份验证,
    @Header(X-API的版本)的String版本,
    回调<使用者>回电话
)
 

解决方案

除了使用@Header参数,我宁愿使用RequestInterceptor不改变你的界面更新您的所有要求。使用这样的:

  RestAdapter.Builder建设者=新RestAdapter.Builder()
    .setRequestInterceptor(新RequestInterceptor(){
        @覆盖
        公共无效拦截(RequestFacade要求){
            request.addHeader(接受,应用/ JSON;版本= 1);
            如果(isUserLoggedIn()){
                request.addHeader(授权,为gettoken());
            }
        }
    });
 

I am using OAuth and I need to put the OAuth token in my header every time I make a request. I see the @Header annotation, but is there a way to make it parameterized so i can pass in at run time?

Here is the concept

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

Can you pass them in at Runtime?

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

解决方案

Besides using @Header parameter, I'd rather use RequestInterceptor to update all your request without changing your interface. Using something like:

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());
            }                    
        }
    });

这篇关于Android的改造参数@Headers的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆