使用 ASIHTTPRequest 的可达性

Posted

技术标签:

【中文标题】使用 ASIHTTPRequest 的可达性【英文标题】:Using ASIHTTPRequest's Reachability 【发布时间】:2012-02-07 23:48:38 【问题描述】:

我开始在我的 ios 项目中使用 Reachability 来测试是否有互联网连接。

我的应用包含在带有 3 个不同选项卡的 UITabBarController 中。每个选项卡的根是不同的UIViewController。在每个控制器中,我根据用户的操作提出几个请求。

我的问题是如何创建一个全局函数(或宏)以在使用互联网连接的每个函数之前使用,而无需在每个控制器中重写此函数。

有可能有这样的功能吗?我看到有一种方法可以让应用程序根据网络状态发送通知。但是看看这个例子:

    用户点击UIButton 网络可用,请求开始。 如果网络出现故障,如何停止请求并显示例如UIAlertView

我已经很好地搜索了,但我找不到我的问题的答案,谢谢。

【问题讨论】:

【参考方案1】:

在发出网络请求之前,不应使用可达性来检测网络是否可用,因为发出网络请求的行为可能会在需要时启动网络。可达性应该只用于检测网络在不可用后何时变为可用。

尝试发出网络请求 - 如果网络不可用,您会收到错误消息。通常响应会立即返回,但如果网络参差不齐,则可能需要一段时间,因此您不应该在主线程上进行同步网络调用。尽可能使用 NSURLConnection,当有事情发生时你会得到回调。

【讨论】:

我使用ASIHTTPRequest 发出异步请求。难道没有更优雅的方式在发出请求之前检查网络是否可用? 不可靠,不。提出请求,检查错误。设备将关闭无线电以节省电力,发出请求的行为可以再次开启无线电。

以上是关于使用 ASIHTTPRequest 的可达性的主要内容,如果未能解决你的问题,请参考以下文章

使用 ASIHTTPRequest 的可达性

iOS开发网络篇—简单介绍ASI框架的使用

iOS开发网络篇—使用ASI框架进行文件下载

ASI和AFN的区别

IOS ASI (第三方请求)

ASI进行POST网络请求