通过使用NSURLConnection调用在某个方法上返回YES来测试web服务的可达性是不好的做法吗?
我尝试了其他方法,但不知道如何测试特定服务是否可用,而不是WiFI或类似的。
有SCNetworkReachability
(参见Apple的可达性示例代码),但它只检查服务器是否应该可达,它不会告诉你服务是否实际可用(运行)。为此,你必须尝试使用它。只要确保而不是在主线程上使用sendSynchronousRequest:returningResponse:error:
,因为这是同步的,并且会阻塞线程直到它完成。如果你在主线程上这样做,UI将冻结,直到服务响应或超时。所以要么使用NSURLConnection
的异步方法("推荐的"方法),要么在单独的线程上使用同步方法。在我看来,前者更容易/更好。
这是唯一的可靠的方法。但是,在您进行测试和尝试获取实际数据之间,服务的状态可能会发生变化,因此您必须对实际连接进行编码,就好像您还没有检查过一样,那么为什么还要进行单独的检查呢?