Isso também me mordeu. Eu estava usando uma solicitação GET para validar um código de voucher multiuso em um servidor. Quando adicionamos uma limitação de taxa para resgatar códigos, alguns clientes informaram que atingiram o limite antes que precisassem. Acontece que algumas das validações desencadearam dois reds.
Suponho que sua solicitação esteja usando o método GET.
O comportamento padrão quando se usa GET é permitir conexões persistentes ( o cabeçalho HTTP Keep-Alive ).
Ao usar uma conexão persistente, sua solicitação GET poderá ser retransmitida se algo na rede parecer inseguro (esse é um termo técnico), em vez de a solicitação falhar. Isso geralmente é desejável porque as solicitações GET geralmente não têm efeitos colaterais no servidor.
As solicitações POST ou PUT, por outro lado, usam como padrão não usar uma conexão persistente e não retransmitirão sua operação, o que pode ser uma compra com cartão de crédito ou algo mais com efeitos colaterais significativos.
Se você deseja evitar que seu ASIHTTPRequest GET envie, por vezes, duas ou mais solicitações de servidor (devido a problemas de rede fora de seu controle), basta definir esse sinalizador:
request.shouldAttemptPersistentConnection = NO;
Isso deve cuidar dos duplicados espúrios do GET no servidor.