我想处理没有互联网连接的情况。通常我会运行:
ConnectivityManager cm =
(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null &&
activeNetwork.isConnectedOrConnecting();
(from here http://developer.android.com/training/monitoring-device-state/connectivity-monitoring.html)在向网络发送请求之前,如果没有互联网连接,则通知用户。
据我所知,Retrofit 并没有专门处理这种情况。如果没有互联网连接我就会得到RetrofitError
以超时为理由。
如果我想使用 Retrofit 将这种检查合并到每个 HTTP 请求中,我应该怎么做?或者我应该这样做吗?
Thanks
Alex
我最终要做的是创建一个自定义的 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(), ...))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)