我收到了一个不存在的文件的标题信息?

时间:2015-04-27 03:17:48

标签: 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"];
}

并且,在大多数情况下,它的工作原理! WA-HOO。

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

我已检查并重新检查remoteFileURL是否指向正确的网址,并且我已确认该文件已不再存在于服务器上。并且,就像我说的那样,对于大多数文件来说它完美无缺,显然系统并没有完全破坏。

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

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

提前致谢!

1 个答案:

答案 0 :(得分:1)

发表评论作为答案

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

[[NSURLCache sharedURLCache] removeAllCachedResponses];


<小时/> 如果您想忽略微粒请求的缓存,请尝试以下代码

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