ASIHTTPRequest,请求发送两次

Øys*_*sen 4 iphone http asihttprequest ios xcode4

我刚刚开始在iOs上使用ASIHTTPRequest,我遇到了一个小问题.所有请求都被发送两次到服务器,即使我只从库中获得一个回复给我的委托方法.

同步和异步请求都有此问题.我使用Xcode 4和ARC,但是通过添加-fno-objc-arc作为编译器标志来禁用ASIHTTPRequest.

有什么想法错了..?

码:

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request startSynchronous];

NSError *error = [request error];
if (!error) {
}
Run Code Online (Sandbox Code Playgroud)

Hei*_*erg 15

这也困扰了我.我正在使用GET请求来验证服务器上的多用途凭证代码.当我们为兑换代码添加了一个速率限制时,一些客户报告说它们应该达到限制之前.事实证明,一些验证引发了两次赎回.

您的请求正在使用GET方法.

使用GET时的默认行为是允许持久连接(Keep-Alive HTTP标头).

当使用持久连接时,如果网络上的某些内容看起来很糟糕(这是技术术语)而不是请求失败,则可能会重新传输GET请求.这通常是可取的,因为GET请求通常不会对服务器产生任何副作用.

另一方面,POST或PUT请求默认不使用持久连接,并且不会重新传输您的操作,这可能是购买信用卡或其他具有重大副作用的操作.

如果您希望阻止ASIHTTPRequest GET有时发送2个或更多服务器请求(由于您的控制之外的网络问题),您只需设置此标志:

request.shouldAttemptPersistentConnection = NO;
Run Code Online (Sandbox Code Playgroud)

这应该处理服务器上的虚假GET重复项.