iphone - 如何使用 NSHTTPURLResponse 在 iPhone 上通过 HTTP 查询文件的最后修改日期?

标签 iphone objective-c ios cocoa-touch nsurlrequest

在我的 iPhone 应用程序中,我需要通过 HTTP 查询互联网 .m4a 文件的最后修改日期,但我不要想下载它。

我正在阅读 Apple 关于 NSURLRequestNSHTTPURLResponse 的文档,但它似乎都与下载文件有关,而不是先查询它。也许我错了。

如何通过 HTTP 知道 .m4a 文件的最后修改日期,无需 下载它?

谢谢!

最佳答案

此答案假设您的服务器支持它,但您所做的是向文件 URL 发送“HEAD”请求,您只取回文件头。然后,您可以检查名为“Last-Modified”的 header ,它通常具有日期格式 @"EEE',' dd MMM yyyy HH':'mm':'ss 'GMT'"

这是一些代码:

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");
}

当然,您可能希望此操作在后台异步完成,但这段代码应该为您指明正确的方向。

最好的问候。

关于iphone - 如何使用 NSHTTPURLResponse 在 iPhone 上通过 HTTP 查询文件的最后修改日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10856302/

相关文章:

iphone - 如何将带有 CAEmitterLayer 的 UIView 添加到我的游戏中?

ios - 更改 UINavigationBar 背景图像并使 UINavigationBar 缩放

iphone - NSDate isEqualToDate : not working - does it look at seconds and split seconds?

ios - 当 UICollectionView 位于 iOS 中的自定义 TableViewCell 内时,如何实现 UICollectionView 的委托(delegate)和数据源方法, Objective-C

ios - 缩放图像以填充后,SwiftUI边缘变得可见

iphone - NSUserDefaults: +resetStandardUserDefaults 方法有什么用?我如何提供 "system settings"?

iphone - 如何在基于导航的 iOS 应用程序中访问比当前 View 上一级的 View ?

ios - 当我的应用程序在使用 Swift 时仍在播放其声音时,如何允许背景音乐继续播放

ios - 图像从不同区域上传到 AWS S3 立即失败,但如果与存储桶位于同一区域则成功

ios - 在具有透明 View 的 UITableview 中显示图像列表