ios - 如何在不下载外部 URL 的情况下测试文件是否存在?

标签 ios

我想在不加载任何实际数据的情况下测试 URL 是否存在。

我正在考虑启动 NSURLConnection,然后使用这两个委托(delegate)方法来检查状态:

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
    // Connection failed ... presumably this is a server issue, and I don't know if the URL exists or not.
}

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
    int status = [((NSHTTPURLResponse *)response) statusCode];
    [connection cancel];
    // Do something with the status
}

这是一种明智的方式吗?我正在测试的文件可能非常大,因此我想确保未下载实际文件。

谢谢, 罗恩

附:我正在考虑添加此内容,因为苹果强制我的应用程序停止备份从互联网下载的文件。相反,我将文件存储在非备份空间中,并在备份数据库中跟踪文件的原始位置。由于该文件旨在成为用户库的永久部分,因此我想定期测试文件是否不可访问,然后将其移至备份空间(例如,这样它将在恢复到新设备时幸存下来) 。我对 Apple 强制我做出此更改感到非常恼火,因为我可以想象客户会丢失重要数据。

p.p.s。由于某些奇怪的原因,这些委托(delegate)方法不再出现在 NSURLConnectionDelegate 协议(protocol)的文档中。我假设文档只是一团糟。

最佳答案

就个人而言,我会发送原始请求或修改 header 以使用 HEAD(标准 HTTP header )。

它的结果类型与 GET 相同,因此如果您可以检查结果 header ,看看它是 403,404 还是 201,那就没问题了。

http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html

关于ios - 如何在不下载外部 URL 的情况下测试文件是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9524718/

相关文章:

ios - Swift Tableview 获取特定单元格不工作

ios - 自 Pod 更新以来,Google map 相机目标位于 iOS map 的左上角

ios - 即使在事件发布后,Combine 中的超时运算符也会超时

iphone - 从多个 UIButtons 调用一个选择器

ios - 如何使用 UIPickerview 在两个 View Controller 之间导航

ios - 在 iOS 中解析 XML?

iOS 应用版本 : Bundle identifier error?

ios - 为什么 Zombie Instruments 工具中的分配继续增加,而 Allocations Instruments 工具中却没有

iphone - 获取经过验证的商家paypal邮箱ID

ios - 如何从我自己的应用程序打开任何iOS应用程序