通过对某个方法使用NSURLConnection调用来测试Web服务的可达性是不好的做法,如果连接存在,则返回YES?
我查看了其他方法,但无法确定测试特定服务是否可用而不是WiFI等。
答案 0 :(得分:3)
有SCNetworkReachability
(参见Apple's Reachability sample code),但只检查服务器是否可以访问,它不会告诉您服务是否实际可用(正在运行)。为此你必须尝试使用它。只需确保不在主线程上使用sendSynchronousRequest:returningResponse:error:
,因为它是同步的,并将阻塞线程直到完成。如果您在主线程上执行此操作,UI将冻结,直到服务已响应或超时。因此要么使用NSURLConnection
的异步方法(“推荐”方式),要么在单独的线程上使用同步方法。在我看来,前者更容易/更好。
答案 1 :(得分:2)
这是唯一方式可靠地完成它。虽然,服务的状态可以在您进行测试和尝试获取实际数据之间发生变化,因此您必须编写真实连接的代码,就好像您还没有检查过一样,那么为什么还要单独检查呢?