如何检查对SBJson URL的网络访问

时间:2011-09-19 15:51:45

标签: iphone objective-c

我正在使用SBJson从URL中检索数据。如何在下载之前检查我是否有权访问该URL。我想检查一下,如果没有网络连接,有时应用程序崩溃。

这是我的代码

id response = [self objectWithUrl:[NSURL URLWithString:@"http://myurl.com/Service.svc/GetId"]];

*我正在使用stringWithUrl和objectWithUrl方法下载JSON。

2 个答案:

答案 0 :(得分:0)

使用Reachability API并将该URL用作您正在测试的主机名

http://developer.apple.com/library/ios/#samplecode/Reachability/Introduction/Intro.html

//reachabilityWithHostName- Use to check the reachability of a particular host name. 
+ (Reachability*) reachabilityWithHostName: (NSString*) hostName;

答案 1 :(得分:0)

请勿在主线程上使用Reachability来检测您是否具有网络连接。它不起作用,可以锁定30秒或更长时间,导致您的应用程序被终止。

相反,您应该尝试使用NSURLConnection下载数据 - 如果需要,这将启动无线电。如果发生错误,您将收到回调。

所有网络连接(包括域名查找)应该在辅助线程上或异步或至少非阻塞。对于NSURL,请使用NSURLConnection的异步回调。

您的应用程序可能崩溃,因为您正在从主线程进行网络调用并锁定超过30秒,因此系统监视程序计时器会导致您死亡。查看Xcode中的崩溃日志应该验证。否则,您可能只是没有正确处理错误条件。