【发布时间】:2014-01-14 05:07:12
【问题描述】:
我想处理没有互联网连接的情况。通常我会跑:
ConnectivityManager cm =
(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null &&
activeNetwork.isConnectedOrConnecting();
(来自here)在将请求发送到网络之前并在没有互联网连接时通知用户。
据我所知,Retrofit 并没有专门处理这种情况。如果没有互联网连接,我将得到RetrofitError,并以超时为理由。
如果我想通过 Retrofit 将这种检查合并到每个 HTTP 请求中,我应该怎么做?或者我应该这样做。
谢谢
亚历克斯
【问题讨论】:
-
您可以使用 try-catch 块来捕获 http 连接的超时异常。然后,告诉用户互联网连接状态。不漂亮,但另一种解决方案。
-
是的,但是用 Android 检查它是否有互联网连接而不是等待从套接字获取连接超时要快得多
-
Android Query 处理“没有互联网”并很快返回相应的错误代码。也许值得用 aQuery 替换它?另一种解决方案是在网络变化时创建一个监听器,因此应用程序将在发送请求之前知道互联网可用性。
-
对于改造 2,请参阅 github.com/square/retrofit/issues/1260