我正在使用SBJson从URL中检索数据。如何在下载之前检查我是否有权访问该URL。我想检查一下,如果没有网络连接,有时应用程序崩溃。
这是我的代码
id response = [self objectWithUrl:[NSURL URLWithString:@"http://myurl.com/Service.svc/GetId"]];
*我正在使用stringWithUrl和objectWithUrl方法下载JSON。
答案 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中的崩溃日志应该验证。否则,您可能只是没有正确处理错误条件。