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

前端之家收集整理的这篇文章主要介绍了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;
    }
}

猜你在找的Java相关文章