我想在不加载任何实际数据的情况下测试 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,那就没问题了。
关于ios - 如何在不下载外部 URL 的情况下测试文件是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9524718/