我正在使用从教程中获得的代码来查找服务器上文件的“修改日期”信息。其过程如下...
// 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,并且我已经确认服务器上不再存在该文件。而且,就像我说的,对于大多数文件来说它都可以完美地工作,所以显然系统并没有完全损坏。
这是我第一次使用 NSMutableURLRequest
和 NSHTTPURLResponse
以及获取文件头等。有什么我不知道的事情可以解释吗?是否有缓存或需要清除的东西?
理想情况下,我该怎么做才能确保我的应用程序收到正确的信息?
提前致谢!
最佳答案
发布我的评论作为答案
出现这种情况是因为 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/