如何测试Web服务是否可用

时间:2010-04-08 09:38:26

标签: iphone xcode web-services

我正在使用...

从Web服务检索数据
NSString *myDataString = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&outError];

如何处理Web服务不可用的情况?现在应用程序只是挂断了。

有没有办法测试网站是否可用? olso,initWithContentsOfURL没有任何超时功能。

我查看了使用URLConnection作为请求和接收数据字符串的替代方法。但是,我无法弄清楚如何。

感谢您的帮助。

约翰

1 个答案:

答案 0 :(得分:3)

你不应该使用initWithContentsOfURL:,它是一个阻止API,会导致你的应用在执行时挂起,除非你手动生成一个新线程来运行它并正确管理它。

您应该使用NSURLConnection来执行网络请求。

使用NSURLConnection,您将获得无阻塞的异步功能,并且还能够处理身份验证,响应代码,超时和取消请求等内容。

查找NSURLConnectionNSURLRequest(以及NSMutableURLRequest)的文档。

NSURLConnection委托方法是处理响应代码,身份验证等的方式。

至于您的原始问题,您可以通过多种方式测试网络服务的可用性:

  • 使用Apple的可访问性示例来测试是否可以从当前网络访问互联网连接和/或主机。
  • 使用NSURLConnection处理来自服务器的响应代码。 200可以,找不到404页面,需要401授权,500内部服务器错误等等
    • 您可以根据代码执行不同的操作。