有选择地将承载令牌添加到Retrofit中的标头

时间:2016-12-08 05:58:43

标签: android retrofit retrofit2

我想知道是否有任何选项可以根据Retrofit中的标志或注释启用/禁用标头拦截器。由于我的API中很少有路径不需要令牌,因此我需要跳过向这些API调用添加令牌。

目前我有一个简单的拦截器,它会为我的应用程序的所有请求添加一个标头

//builder is of type OkHttpClient.Builder
builder.addInterceptor(chain -> {
    Request request = chain.request().newBuilder().
    addHeader("authorization", "Bearer foofootoken").build();

    return chain.proceed(request);
});

1 个答案:

答案 0 :(得分:2)

我前段时间对此进行了研究,但我没有找到开箱即用改装提供的任何解决方案,但您可以自行轻松实施解决方法。

使用您选择的标题注释请求,例如“NoAuth:true”并在拦截器中检查此标头:

builder.addInterceptor(chain -> {
    String noAuthHeader = chain.request().header("NoAuth");
    Request.Builder request = chain.request().newBuilder();
    if(noAuthHeader == null || !noAuthHeader.equals("true")){
        request.addHeader("authorization", "Bearer foofootoken").build();
    }

    return chain.proceed(request.build());
});
相关问题