我知道可以通过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; } }