我想在不加载任何实际数据的情况下测试 URL 是否存在。
我正在考虑启动 NSURLConnection,然后使用这两个委托方法来检查状态:
- (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
}
Run Code Online (Sandbox Code Playgroud)
这是一个明智的方式吗?我正在测试的文件可能非常大,因此我想确保不会下载实际文件。
谢谢,罗恩
ps 我正在考虑添加这个,因为苹果强制我的应用程序停止备份从互联网下载的文件。相反,我将文件存储在非备份空间中,并在备份数据库中跟踪文件的原始位置。由于该文件旨在成为用户库的永久部分,因此我想定期测试文件是否不可访问,然后将其移至备份空间(例如,这样它将在恢复到新设备时幸存下来) 。我对苹果公司强迫我做出这样的改变感到非常恼火,因为我可以想象客户会丢失重要数据。
pps 由于某些奇怪的原因,这些委托方法不再出现在 NSURLConnectionDelegate 协议的文档中。我假设文档只是搞砸了。
小智 5
就我个人而言,我会发送原始请求或修改标头以使用 HEAD(标准 HTTP 标头)。
它与 GET 具有相同的结果类型,因此如果您可以检查结果标头,看看它是 403,404 还是 201,那么就可以了。
http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
| 归档时间: |
|
| 查看次数: |
1611 次 |
| 最近记录: |