HTTP-метод POST возвращает не кэшированные данные - почему? - PullRequest
0 голосов
/ 24 февраля 2020

Время от времени моему приложению нужно получать данные страницы своего App Store. Это файл .txt (в формате json), который содержит информацию о приложении, такую ​​как строка версии.

Когда публикуется новая версия, бинарный файл с новой версией почти сразу же доступен для загрузки. ОДНАКО, для извлеченной json требуется много-много часов, чтобы содержать только что опубликованную информацию. Вероятно, это кэшированная копия, хотя я запрашиваю перезагрузку:

NSString *asInfo = @"https://itunes.apple.com/lookup?bundleId=net.whatsapp.WhatsApp"; // just an example
NSURL *url = [NSURL URLWithString:asInfo];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
request.cachePolicy = NSURLRequestReloadIgnoringLocalCacheData;

Из-за этого существует несколько часов ложной разницы между локальной версией приложения, которое было только что загружено из App Store, и версия, содержащаяся в извлеченном файле.

Я попытался избежать кэширования копии многими способами (не показано выше, включая использование NSURLCache и NSURLSession). Ничего не помогло, и я всегда получал кэшированную копию с предыдущей версией.

В конце концов мне удалось получить бесплатную sh копию, добавив:

[request setHTTPMethod: @"POST"];

МОЙ ВОПРОС : Почему простое добавление метода POST приводит к получению файла fre sh, а все остальное терпит неудачу?

Если я удаляю эту единственную строку POST и снова запускаю приложение, я получите неправильный, кешированный файл - снова.

BTW : при вставке того же URL-адреса в Safari также получается файл fre sh.

...