#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 для каждого запроса, что вызывало проблемы с другими запросами, поскольку оно использовалось повторно.
Поэтому запрос был помечен как завершенный, и поэтому он даже не потрудился сделать еще один запрос, если это имеет смысл.
Спасибо