如何通过Retrofit 2检测到没有互联网连接错误?
我以前在Retrofit 1中做的是实现Client接口并在执行时执行连接检查(请求请求)。
我在Retrofit 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();
}
}
我可以通过添加try-catch块来实现同步Retrofit执行,但不能使用异步,其中错误作为OnFailure的参数返回(Call call,Throwable t)。应用程序崩溃与OfflineException我扔进拦截器。
答案 0 :(得分:2)
找到解决方案。
我的OfflineException
课程必须继承IOException