如何使用Retrofit 2检测没有互联网连接错误?
我在Retrofit 1中曾经做的是实现Client接口(interface)并在execute(Request request)执行连接检查。
我在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而崩溃。
最佳答案
找到了解决方案。
我的OfflineException
类必须继承IOException
关于android - 在改造2中检测 'no internet'连接错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38732356/