【问题标题】:problems with iphone code to check server file dateiphone代码检查服务器文件日期的问题
【发布时间】:2010-10-31 14:02:13
【问题描述】:

我想在我的服务器上检查文件(zip、jpg 或其他文件)上的日期,如果它们比我 iPhone 上的副本更新,我想下载它们。

我根据这里大约一年前的帖子编写了以下方法。它有两个问题:

+ (NSString *) f_GetServerFileDate:(NSString *)MyURL {
    NSURL *oURL = [NSURL URLWithString:MyURL];
    NSURLRequest *oRequest = [NSURLRequest requestWithURL:oURL];
    NSHTTPURLResponse *oResponse;
    [NSURLConnection sendSynchronousRequest:oRequest returningResponse:&oResponse error:nil];
    if ( [oResponse respondsToSelector:@selector( allHeaderFields )] ) {
        NSDictionary *metaData = [oResponse allHeaderFields];
        return [metaData objectForKey:@"Last-Modified"];
    } else {
        return @"00000000";
    }
}

问题 1:当给定“http://www.mysite.com/myzip.zip”作为 URL 时,它返回“00000000”。 问题 2:对于 Active Server Page(只是一个测试;并不是我真的会下载一个),它返回的日期与文件上次上传或修改的日期无关。

什么是正确的方法?

【问题讨论】:

    标签: iphone date compare local


    【解决方案1】:

    这可能不是您的 iPhone 代码的问题,而是网络服务器的问题。 Web 服务器不需要包含 Last-Modified 标头属性。对于动态页面(例如 ASP 页面),返回页面动态生成的日期(即当前日期)而不是页面开发或部署的日期是正确的。

    我建议您使用 Fireofx 的 Live HTTP 标头 之类的浏览器扩展程序来观察 Web 服务器返回的 HTTP 标头属性。如果缺少日期,您将不走运(除非您可以访问网络服务器并且可以在那里修复它)。

    此外,您的代码将始终下载图像,无论图像最后一次修改是什么时候。如果您在请求中包含 HTTP 标头 If-Modified-Since,则可以防止这种情况发生。这样,如果图像自指定日期以来已被修改,Web 服务器将发送图像,或者如果图像仍然是最新的,则仅发送 304(未修改) 结果代码。但同样:是否支持此选项取决于 Web 服务器,并且它仅适用于静态内容,除非 Web 应用程序的作者专门实现了它。

    【讨论】:

      猜你喜欢
      • 2021-10-04
      • 1970-01-01
      • 1970-01-01
      • 2014-03-14
      • 1970-01-01
      • 1970-01-01
      • 2018-01-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多