0

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

// 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"];
}

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

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

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

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

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

提前致谢!

4

1 回答 1

1

发表我的评论作为答案

由于 NSURL 的缓存机制,这种事情发生了。
尝试添加以下行以删除所有缓存的数据。

[[NSURLCache sharedURLCache] removeAllCachedResponses];



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

NSURL *url = [NSURL URLWithString:aStrFinalURL];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];
于 2015-04-27T05:12:12.693 回答