您的位置:首页 > 理论基础 > 计算机网络

IOS开发之——ASIHTTPRequest请求时,发送了2次请求问题解决

2012-09-14 11:31 639 查看




相信很多朋友会遇到:使用ASIHTTPRequest GET请求时,发送了2次(即重复发送了1次)

由于之前的app都对失败,没有非常重要的要求,因此,也从没留意这个问题。这次产品升级,增加了一些新的需求,这些需求又恰好对这个要求较高,为这个问题纠结了一段时间


后来组内老大网上找到答案,这是stackoverflow上分享的一段话(地址:http://stackoverflow.com/questions/8317662/asihttprequest-request-sent-twice)

This has bitten me too. I was using a GET request to validate a multi-use voucher code on a server. When we added a rate limitation for redeeming codes some customers reported hitting the limit before they should have. Turns out that some of the validations
triggered two redeems.

Your request is using the GET method.

The default behavior when using GET is to allow persistent connections (the
Keep-Alive HTTP header).

When using a persistent connection your GET request might get retransmitted if something on the network looks wonky (that's a technical term) instead of the request just failing. This is usually desirable because GET requests often do not have any side effects
on the server.

POST or PUT requests on the other hand default to not use a persistent connection and will not retransmit your operation, which could well be a credit card purchase or something else with significant side effects.

If you wish to prevent your ASIHTTPRequest GET sometimes sending 2 or more server requests (due to network issues outside your control) you can simply set this flag:

request.shouldAttemptPersistentConnection
=
NO;


This
should take care of the spurious GET duplicates on the server.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: