gpt4 book ai didi

android - 我应该如何在 Android 上使用 Retrofit 处理 "No internet connection"

转载 作者:IT老高 更新时间:2023-10-28 13:03:35 24 4
gpt4 key购买 nike

我想处理没有互联网连接的情况。通常我会跑:

ConnectivityManager cm =
(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null &&
activeNetwork.isConnectedOrConnecting();

(来自 here )在将请求发送到网络之前,如果没有互联网连接则通知用户。

据我所知,Retrofit 并没有专门处理这种情况。如果没有互联网连接,我只会以超时为原因得到 RetrofitError

如果我想通过 Retrofit 将这种检查合并到每个 HTTP 请求中,我应该怎么做?或者我应该这样做。

谢谢

亚历克斯

最佳答案

我最终做的是创建一个自定义 Retrofit 客户端,该客户端在执行请求之前检查连接并引发异常。

public class ConnectivityAwareUrlClient implements Client {

Logger log = LoggerFactory.getLogger(ConnectivityAwareUrlClient.class);

public ConnectivityAwareUrlClient(Client wrappedClient, NetworkConnectivityManager ncm) {
this.wrappedClient = wrappedClient;
this.ncm = ncm;
}

Client wrappedClient;
private NetworkConnectivityManager ncm;

@Override
public Response execute(Request request) throws IOException {
if (!ncm.isConnected()) {
log.debug("No connectivity %s ", request);
throw new NoConnectivityException("No connectivity");
}
return wrappedClient.execute(request);
}
}

然后在配置RestAdapter

的时候使用
RestAdapter.Builder().setEndpoint(serverHost)
.setClient(new ConnectivityAwareUrlClient(new OkHttpClient(), ...))

关于android - 我应该如何在 Android 上使用 Retrofit 处理 "No internet connection",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20786593/

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