2
Retrofit 2でインターネット接続エラーを検出できません。Retrofit 2で「インターネットに接続できません」というエラーを検出しました
Retrofit 1で私がしていたことは、クライアントインターフェイスを実装し、実行時に接続チェックを実行することでした。私はレトロフィット2で試み何
はです:
public class RequestInterceptor implements Interceptor {
final ConnectivityManager connectivityManager;
@Inject
public RequestInterceptor(ConnectivityManager connectivityManager) {
this.connectivityManager = connectivityManager;
}
@Override
public Response intercept(Chain chain) throws IOException {
if (isConnected()) {
throw new OfflineException("no internet");
}
Request.Builder r = chain.request().newBuilder();
return chain.proceed(r.build());
}
protected boolean isConnected() {
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
return networkInfo != null && networkInfo.isConnectedOrConnecting();
}
}
私はではなく、エラーがONFAILUREのパラメータとして返され、非同期で(、try-catchブロックを追加することにより、同期レトロフィットの実行でそれをキャッチすることができていますコールコール、Throwable t)。アプリケーションはちょうどOfflineExceptionでクラッシュし、私はインターセプターを投げます。
を継承する必要があります。単に 'chain.proceed(chain.request())'を呼び出してください。 –
@awonderer - この方法はネットワーク接続をチェックするだけで、インターネット接続もチェックしますか? –