ios - 我正在获取一个不存在的文件的标题信息?

标签 ios http-headers nsurlconnection nshttpurlresponse

我正在使用从教程中获得的代码来查找服务器上文件的“修改日期”信息。其过程如下...

// create a HTTP request to get the file information from the web server
NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:remoteFileURL];
[request setHTTPMethod:@"HEAD"];

NSHTTPURLResponse* response;
[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];

// get the last modified info from the HTTP header
NSString* httpLastModified = nil;
if ([response respondsToSelector:@selector(allHeaderFields)]) {
    httpLastModified = [[response allHeaderFields] objectForKey:@"Last-Modified"];
}

而且,在大多数情况下,它是有效的!哇呼。

但是,对于一些文件,它似乎返回过时的信息。事实上,至少对于一个文件,它返回一个日期(2015 年 4 月 24 日星期五 04:32:55 GMT)甚至不再存在。我从服务器中删除了它,但每次运行应用程序时它仍然返回该值,就好像该文件仍然存在一样。

我检查并重新检查了 remoteFileURL 是否指向正确的 URL,并且我已经确认服务器上不再存在该文件。而且,就像我说的,对于大多数文件来说它都可以完美地工作,所以显然系统并没有完全损坏。

这是我第一次使用 NSMutableURLRequestNSHTTPURLResponse 以及获取文件头等。有什么我不知道的事情可以解释吗?是否有缓存或需要清除的东西?

理想情况下,我该怎么做才能确保我的应用程序收到正确的信息?

提前致谢!

最佳答案

发布我的评论作为答案

出现这种情况是因为 NSURL 的缓存机制。
尝试添加以下行以删除所有缓存的数据。

[[NSURLCache sharedURLCache] removeAllCachedResponses];



如果您想忽略颗粒请求的缓存,请尝试以下代码

NSURL *url = [NSURL URLWithString:aStrFinalURL];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];

关于ios - 我正在获取一个不存在的文件的标题信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29886602/

相关文章:

ios - 删除商店中的旧应用后上传新应用时出错

ios - 释放 View Controller 时调用 NSUrlSessionConnection 委托(delegate)方法

ios - 用 NSURLSession 替换同步 NSURLConnection 的最佳实践

ios - 使用 NSURLSession 并返回特殊字符

ios - 基于现有文件创建新的 Xcode 项目。 (在 NSTimer 中创建圈数)

ios - 使用 Autolayout 时,单元格高度会随着设备高度的变化而变化吗?

iphone - 无法在 ScrollView 中显示 ScrollView 指示器

python: httplib 错误: 无法发送 header

http - http header 中是否允许多个线性空白

security - http和https的区别