setHttpMethod странное поведение

Я столкнулся со странной проблемой при загрузке XML-файлов с сервера.

Я пытаюсь получить schedulist.xml, используя следующий код,

- (void) downloadXml:(NSString*)url {

_urlRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];

    [_urlRequest setHTTPMethod:@"GET"];

       if(_urlConnection !=NULL)
        return NO;

    _urlConnection = [[NSURLConnection alloc] initWithRequest:_urlRequest delegate:self startImmediately:YES];

}

Проблема в,

  1. Когда интернет будет доступен, Если я нажму на кнопку, чтобы загрузить XML, Fine. XML загружается.
  2. Выключил интернет сейчас, если я нажму кнопку еще раз, он звонит didReceiveResponse,didReceiveData and connectionDidFinishLoading. К вашему сведению, я удалил старые данные ответа.

Но дело в том, если я использую [_urlRequest setHTTPMethod:@"POST"]; Работает нормально, а это

  1. Работает нормально с интернетом
  2. didFailWithError вызывается

В чем может быть проблема?

1 ответ

Решение

По умолчанию NSURLRequest использует данные протокола, чтобы решить, кэшировать ли запрос или нет.
Например, если директивы "Cache-control" или "Expires" присутствуют в заголовках ответов ( RFC2616), их значения будут использоваться для определения, может ли кэшированный ответ использоваться как есть.
Обычно кешируются только запросы GET, поэтому вы получаете didFailWithError на ваше POST запрос.
Чтобы избежать кеширования, вы можете исправить заголовки на вашем сервере или установить cachePolicy собственностью NSURLRequest в NSURLRequestReloadIgnoringLocalCacheData

Другие вопросы по тегам