java – 如何将拦截器添加到除一个或两个以外的所有API请求?

我知道可以通过OkHttpClient向所有请求添加一个拦截器,但我想知道是否可以在Okhttp中为所有请求添加标头,除了一个请求或两个使用OkHttpClient.

例如,在我的API中,除了oauth / token(获取令牌)和api / users(注册用户)路由之外,所有请求都需要持有者令牌(Authorization:Bearer token-here header).是否可以在一步中使用OkHttpClient为除排除的请求之外的所有请求添加拦截器,还是应该为每个请求单独添加标头?

解决方法

我找到了答案!

基本上我像往常一样需要一个拦截器,我需要检查那里的URL,以了解我是否应该添加授权标头.

import java.io.IOException;

import okhttp3.Interceptor;
import okhttp3.Request;
import okhttp3.Response;

/**
 * Created by Omar on 4/17/2017.
 */

public class NetInterceptor implements Interceptor {
    @Override
    public Response intercept(Chain chain) throws IOException {
        Request request = chain.request();
        if (request.url().encodedpath().equalsIgnoreCase("/oauth/token")
                || (request.url().encodedpath().equalsIgnoreCase("/api/v1/users") && request.method().equalsIgnoreCase("post"))) {
            return  chain.proceed(request);
        }
        Request newRequest = request.newBuilder()
                .addHeader("Authorization","Bearer token-here")
                .build();
        Response response = chain.proceed(newRequest);
        return response;
    }
}

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...