2017-06-05 7 views
0

私はRetrofit Restクライアントインターフェースを40以上のhttpコールで使用しています。私はRestClientを次のように初期化します:Android、Retrofitすべてのリクエストの特定のレスポンスコードをキャッチ

すべてのリクエストは、特別なトークンを必要とします。このトークンが期限切れになると、REST APIは403コードエラーで応答します。

自分のアプリケーションで100を超えるapi呼び出しがあるため、このコード応答を各API呼び出しから確認することができません。

何とか私のRestClientクラスのレベルで403 response codeを捕まえることができるので、認可アクティビティを再度開くことができますか?

答えて

2

まず、403が間違っていると思いますが、401が正しいかもしれません。このトークンが期限切れになると、REST APIは403コードエラーで応答します。 401が発生したときに使用されるAuthenticatorは使用できません。したがって、Interceptorを使用する必要があります。あなたはこのTokenInterceptorを追加okHttpClient TokenInterceptor道具Interceptor

public class TokenInterceptor implements Interceptor { 

    @Override 
    public Response intercept(Chain chain) throws IOException { 
     Request request = chain.request(); 
     Response response = chain.proceed(request); 
     if (response.code() == 403) { 
      doSomething(); 
     } 
     return response; 
    } 
} 

を作成することができます。

関連する問題