以这种方式测试可达性是不好的做法吗?

时间:2011-12-14 14:33:31

标签: objective-c ios5

通过对某个方法使用NSURLConnection调用来测试Web服务的可达性是不好的做法,如果连接存在,则返回YES?

我查看了其他方法,但无法确定测试特定服务是否可用而不是WiFI等。

2 个答案:

答案 0 :(得分:3)

SCNetworkReachability(参见Apple's Reachability sample code),但只检查服务器是否可以访问,它不会告诉您服务是否实际可用(正在运行)。为此你必须尝试使用​​它。只需确保在主线程上使用sendSynchronousRequest:returningResponse:error:,因为它是同步的,并将阻塞线程直到完成。如果您在主线程上执行此操作,UI将冻结,直到服务已响应或超时。因此要么使用NSURLConnection的异步方法(“推荐”方式),要么在单独的线程上使用同步方法。在我看来,前者更容易/更好。

答案 1 :(得分:2)

这是唯一方式可靠地完成它。虽然,服务的状态可以在您进行测试和尝试获取实际数据之间发生变化,因此您必须编写真实连接的代码,就好像您还没有检查过一样,那么为什么还要单独检查呢?