作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我知道可以通过 OkHttpClient
向所有请求添加拦截器,但我想知道是否可以向 Okhttp
中的所有请求添加 header ,除了对于一个或两个使用 OkHttpClient
的请求。
例如,在我的 API 中,除了 oauth/token
(获取 token )和 api/users
(注册用户)路由。是否可以一步为使用 OkHttpClient
的排除请求之外的所有请求添加拦截器,还是应该为每个请求单独添加 header ?
最佳答案
我找到答案了!
基本上我像往常一样需要一个拦截器,我需要检查那里的 URL 以了解我是否应该添加授权 header 。
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 - 如何为除一两个以外的所有 API 请求添加拦截器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43449394/
我是一名优秀的程序员,十分优秀!