gpt4 book ai didi

android - 在 Retrofit 2 中检测到 'no internet' 连接错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:14:40 25 4
gpt4 key购买 nike

如何使用 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 block 通过同步 Retrofit 执行来捕获它,但不能通过异步执行来捕获它,其中错误作为 OnFailure(Call call, Throwable t) 的参数返回。应用程序因我在拦截器中抛出的 OfflineException 而崩溃。

最佳答案

找到解决方案。

我的OfflineException类必须继承IOException

关于android - 在 Retrofit 2 中检测到 'no internet' 连接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38732356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com