Android的改造参数@Headers [英] Android Retrofit Parameterized @Headers
本文介绍了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屋!
查看全文