微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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;
    }
}

原文地址:https://www.jb51.cc/java/121414.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐