ASIHTTPRequest отключение кэша

#objective-c #cocoa #asihttprequest #asiformdatarequest

#objective-c #какао #asihttprequest #asiformdatarequest

Вопрос:

У меня есть приложение, которое входит на онлайн-сайт, используя форму POST, отправляемую из ASIHTTPRequest и ASIFormDataRequest.

У меня есть окно входа в систему, .xib, где пользователь вводит свои данные. Затем, когда они нажимают кнопку «ОК», он подключается к сайту с данными, которые ввел пользователь. Он отправляет форму OK и т. Д.

Но есть проблема. Сначала я ввожу неверные данные, он подключается и сообщает мне HTML-код ответа. Из html я могу сказать, что детали неверны. Теперь я ввожу правильные данные, и ASI * даже не беспокоится о подключении. Когда я сначала ввожу правильные данные, он сообщает мне другой html, который должен отображаться всякий раз, когда я ввожу правильные данные для входа в систему. Итак, проблема в кэше, потому что он не беспокоит повторное подключение по второму запросу, верно?

Я использую Little Snitch.app, поэтому я знаю, когда он подключается, а когда нет.

Теперь звучит вопрос: «Как мне отключить кэш в ASIRequests?»

Большое спасибо.

Фрагмент класса: http://pastebin.com/a83YCpnm

Ответ №1:

ASIHTTPRequest по умолчанию не кэширует ответы POST — смотрите Следующий код в ASIHTTPRequest.m

 if (![[self requestMethod] isEqualToString:@"GET"]) {
    [self setDownloadCache:nil];
}
  

Очевидно, происходит что-то еще — вы уверены, что это POST-запрос, который вы делаете? Как вы включаете кэширование / создаете запрос, не могли бы вы опубликовать какой-нибудь код, пожалуйста?

Комментарии:

1. pastebin.com/a83YCpnm < вот фрагмент класса. Я еще не настроил никакого кэширования. Я попытался установить для политики кэша значение nil и другие атрибуты, которые он может принимать, но это не сработало. я попробую установить загрузочный кэш.

Ответ №2:

Хорошо, я выяснил, в чем проблема. Я не перераспределял ASIFormDataRequest amp; ASIHTTPRequest для каждого запроса, что вызывало проблемы с другими запросами, поскольку оно использовалось повторно.

Поэтому запрос был помечен как завершенный, и поэтому он даже не потрудился сделать еще один запрос, если это имеет смысл.

Спасибо