如果连接存在,通过对某个返回YES的方法使用NSURLConnection调用来测试Web服务的可到达性,这是否是不好的做法?以这种方式测试可达性是不好的做法吗?
我看着其他的方式做它,但无法弄清楚测试特定的服务是否可用,而不是WiFI或类似的。
如果连接存在,通过对某个返回YES的方法使用NSURLConnection调用来测试Web服务的可到达性,这是否是不好的做法?以这种方式测试可达性是不好的做法吗?
我看着其他的方式做它,但无法弄清楚测试特定的服务是否可用,而不是WiFI或类似的。
有SCNetworkReachability
(请参阅Apple's Reachability sample code)但只检查服务器是否应该可达,它不会告诉您服务是否实际可用(正在运行)。为此你必须尝试使用它。只要确保不是在主线程上使用sendSynchronousRequest:returningResponse:error:
,因为它是同步的,并会阻塞线程直到完成。如果你在主线程上这样做,UI将冻结,直到服务已响应或超时。因此,要么使用异步方法NSURLConnection
(“推荐”方式),要么在单独的线程上使用同步方法。前者在我看来更简单/更好。
这是只有方式做到可靠。虽然服务的状态可能会在你进行测试和试图获取真实数据之间发生变化,所以你必须编写你真正的连接,就好像你还没有检查过一样,那么为什么还要单独检查呢?
有趣!虽然它实际上被称为'SCNetworkReachability' - 只是为了更好的可搜索性而修复名称.. ;-) – Jay 2011-12-14 15:24:53