проблемы с кодом iphone для проверки даты файла сервера - PullRequest
1 голос
/ 31 октября 2010

Я хочу проверить даты на файлах - 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. Возвращается значение «00000000», если в качестве URL-адреса указано «* 1006. *»действительно скачать один) он возвращает дату, которая не имеет отношения к дате последней загрузки или изменения файла.

Какой правильный путь?

1 Ответ

1 голос
/ 31 октября 2010

Это, вероятно, не проблема вашего кода iPhone, а скорее веб-сервера.Веб-сервер не обязан включать атрибут заголовка Last-Modified .А для динамических страниц (таких как страницы ASP) правильно возвращать дату, когда страница была сгенерирована динамически (т. Е. Текущую дату), а не дату, когда страница была разработана или развернута.

Я предлагаю вамиспользуйте расширение браузера, такое как Live HTTP-заголовки для Fireofx, чтобы наблюдать, какие атрибуты HTTP-заголовка возвращает веб-сервер.Если дата пропущена, вам не повезет (если у вас нет доступа к веб-серверу и вы не можете исправить его там).

Кроме того, ваш код всегда будет загружать изображение независимо от того, когда оно былоПоследнее изменение.Вы можете предотвратить это, включив в свой запрос HTTP-заголовок If-Modified-Since .Таким образом, веб-сервер отправит изображение, если оно было изменено с указанной даты, или просто отправит код результата 304 (не изменен) , если изображение все еще актуально.Но опять же: зависит от веб-сервера, поддерживается ли эта опция, и она работает только для статического контента, если автор веб-приложения специально не реализовал ее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...