前述のように、1 つの方法は を使用することInterceptors
です。
OkHttp
すべての 401 リクエストをインターセプトするために、クライアントへのコールバックを備えたインターセプターを追加できます。次に、コールバックを呼び出してリスナーに通知します。
addNetworkInterceptor()
ライブデータが必要であり、キャッシュされた結果を安全に無視できるため、必ず として追加してください。
OkHttpClient client = new OkHttpClient.Builder()
.addNetworkInterceptor(new UnauthorizedInterceptor(myListener))
.build();
これがどのように機能するかについてのいくつかのサンプルコード (テストされていません):
public class UnauthorizedInterceptor implements Interceptor {
private Callback mCallback;
public UnauthorizedInterceptor(Callback callback) {
mCallback = callback;
}
@Override
public Response intercept(Chain chain) throws IOException {
Response originalResponse = chain.proceed(chain.request());
if (originalResponse.code() == HttpURLConnection.HTTP_UNAUTHORIZED) {
mCallback.onUserLoggedOut();
}
return originalResponse;
}
interface Callback {
void onUserLoggedOut();
}
}