我正在使用...
从Web服务检索数据NSString *myDataString = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&outError];
如何处理Web服务不可用的情况?现在应用程序只是挂断了。
有没有办法测试网站是否可用? olso,initWithContentsOfURL没有任何超时功能。
我查看了使用URLConnection作为请求和接收数据字符串的替代方法。但是,我无法弄清楚如何。
感谢您的帮助。
约翰
答案 0 :(得分:3)
你不应该使用initWithContentsOfURL:
,它是一个阻止API,会导致你的应用在执行时挂起,除非你手动生成一个新线程来运行它并正确管理它。
您应该使用NSURLConnection
来执行网络请求。
使用NSURLConnection
,您将获得无阻塞的异步功能,并且还能够处理身份验证,响应代码,超时和取消请求等内容。
查找NSURLConnection
和NSURLRequest
(以及NSMutableURLRequest
)的文档。
NSURLConnection
委托方法是处理响应代码,身份验证等的方式。
至于您的原始问题,您可以通过多种方式测试网络服务的可用性:
NSURLConnection
处理来自服务器的响应代码。 200可以,找不到404页面,需要401授权,500内部服务器错误等等