Меня это тоже укусило. Я использовал запрос GET для проверки кода многоразового использования ваучера на сервере. Когда мы добавили ограничение скорости для погашения кодов, некоторые клиенты сообщили о превышении лимита раньше, чем должны были. Оказывается, что некоторые проверки вызвали два погашения.
Ваш запрос использует метод GET.
Поведение по умолчанию при использовании GET - разрешить постоянные соединения ( HTTP-заголовок Keep-Alive ).
При использовании постоянного соединения ваш GET-запрос может быть передан повторно, если что-то в сети выглядит ненадежным (это технический термин), а не просто сбой запроса. Обычно это желательно, потому что запросы GET часто не имеют побочных эффектов на сервере.
С другой стороны, запросы POST или PUT по умолчанию не используют постоянное соединение и не будут повторно передавать вашу операцию, что может быть покупкой кредитной картой или чем-то еще со значительными побочными эффектами.
Если вы хотите, чтобы ваш ASIHTTPRequest GET иногда отправлял 2 или более запросов к серверу (из-за проблем с сетью, находящихся вне вашего контроля), вы можете просто установить этот флаг:
request.shouldAttemptPersistentConnection = NO;
Это должно позаботиться о ложных дубликатах GET на сервере.