使用OkHttp非常强大的
Interceptor.
public class RecoverInterceptor implements Interceptor {
String getAuth() {
// check if we have auth,if not,authorize
return "Bearer ...";
}
void clearAuth() {
// clear everything
}
@Override public Response intercept(Chain chain) throws IOException {
final Request request = chain.request();
if (request.urlString().startsWith("MY ENDPOINT")) {
final Request signed = request.newBuilder()
.header("Authorization",getAuth())
.build();
final Response response = chain.proceed(signed);
if (response.code() == 401) {
clearAuth();
return intercept(chain);
} else {
return response;
}
} else {
return chain.proceed(request);
}
}
}
请记住同步您的身份验证进程代码,以便两个并发请求不会同时调用它.