How to query the last modification date of a file via HTTP on the iPhone using NSHTTPURLResponse?
cocoa-touch, ios, iphone, nsurlrequest, objective-c
Solution
This answer assumes your server supports it, but what you do is send a "HEAD" request to the file URL and you get back just the file headers. You can then inspect the header called "Last-Modified" which normally has the date format `@"EEE',' dd MMM yyyy HH':'mm':'ss 'GMT'"`.
Here's some code:
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"HEAD"];
NSHTTPURLResponse *response;
[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];
if ([response respondsToSelector:@selector(allHeaderFields)])
{
NSDictionary *dictionary = [response allHeaderFields];
NSString *lastUpdated = [dictionary valueForKey:@"Last-Modified"];
NSDate *lastUpdatedServer = [fileDateFormatter dateFromString:lastUpdated];
if (([localCreateDate earlierDate:lastUpdatedServer] == localCreateDate) && lastUpdatedServer)
{
NSLog(@"local file is outdated: %@ ", localPath);
isLatest = NO;
} else {
NSLog(@"local file is current: %@ ", localPath);
}
} else {
NSLog(@"Failed to get server response headers");
}
Of course, you probably want this to be done asynchronously in the background, but this code should point you in the right direction.
Best Regards.
Problem
In my iPhone application I need to query the last modification date of an internet `.m4a` file via `HTTP`, but I DON'T want to downloading it. I'm reading Apple's documentation about `NSURLRequest` and `NSHTTPURLResponse`, but it seems to be all related to downloading the file and not querying it first. Maybe I'm wrong. How can I know the last modification date of a `.m4a` file, via `HTTP`, WITHOUT downloading it? Thanks!