首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Retrofit2授权-访问令牌的全局拦截器

Retrofit2授权-访问令牌的全局拦截器
EN

Stack Overflow用户
提问于 2016-12-11 02:29:01
回答 6查看 118.6K关注 0票数 97

我正在尝试使用Retrofit2,我想像这样将Token添加到我的Header中:

Authorization: Bearer Token,但下面的code不起作用:

代码语言:javascript
复制
public interface APIService {
    @Headers({"Authorization", "Bearer "+ token})
    @GET("api/Profiles/GetProfile?id={id}")
    Call<UserProfile> getUser(@Path("id") String id);
}

我的服务器是asp.net webApi。请帮帮忙,我该怎么办?

EN

Stack Overflow用户

发布于 2018-08-08 19:31:58

如果您想将不记名Token添加为Header,您可以执行这些类型的处理。

这是使用承载令牌的一种方式

界面中的

代码语言:javascript
复制
@Headers({ "Content-Type: application/json;charset=UTF-8"})
@GET("api/Profiles/GetProfile")
Call<UserProfile> getUser(@Query("id") String id, @Header("Authorization") String auth);

在此之后,您将以这种方式调用

对象

代码语言:javascript
复制
Retrofit retrofit  = new Retrofit.Builder()
                    .baseUrl("your Base URL")
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();

APIService client = retrofit.create(APIService.class);
Call<UserProfile> calltargetResponse = client.getUser("0034", "Bearer "+token);
calltargetResponse.enqueue(new Callback<UserProfile>() {
       @Override
       public void onResponse(Call<UserProfile> call, retrofit2.Response<UserProfile> response) {
           UserProfile UserResponse = response.body();
           Toast.makeText(this, " "+response.body(), Toast.LENGTH_SHORT).show();
                }
        @Override
        public void onFailure(Call<UserProfile> call, Throwable t) {
            //Toast.makeText(this, "Failed ", Toast.LENGTH_SHORT).show();
        }
});

另一种方法是使用intercept,这与前面的答案类似。但是,那时候你只需要像这样修改界面。

代码语言:javascript
复制
@Headers({ "Content-Type: application/json;charset=UTF-8"})
@GET("api/Profiles/GetProfile")
Call<UserProfile> getUser(@Query("id") String id); 

希望这对你有用。

票数 33
EN
查看全部 6 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41078866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档