ASIHTTPRequest多次重复请求的问题
来源:互联网 发布:java. se有哪些内容 编辑:程序博客网 时间:2024/05/17 19:14
在一个车票订购的项目中,点击一次订购,却生成了2次订单,通过抓包发现,是客户端请求了2次。在和服务端一番推卸责任之后,最终定位在服务端的问题。
后来证实,问题是在ios端。
服务端:apctch2
用的是webservice
因为接口请求的格式是把参数放在url后面,这样,默认就选择GET方式。
然而,默认的GET方式采用的是connection: keep-alive(长连接方式)
HTTP持久连接(HTTP persistent connection,也称作HTTP keep-alive或HTTP connection reuse)是使用同一个TCP连接来发送和接收多个HTTP请求/应答,而不是为每一个新的请求/应答打开新的连接的方法。
换句话说,在请求服务没有及时响应的时候,客户端会在同一个tcp连接中再次请求服务器。导致的结果就是,客户端的现象:请求了一次。得到了一次response。 服务端收到两次请求,给出了一次返回。
ps:这里的“没有及时响应”,不是ASIHTTPRequest里面的Timeout的概念(30秒服务器没有响应,结束当前tcp连接,建立新的tcp连接)。这里是指服务端没有立刻发送确认ack的包。
解决办法其实很简单:默认设置POST方式:
[request setRequestMethod:@"POST"];
或者
request.shouldAttemptPersistentConnection = NO;(不支持长连接)
0 0
- ASIHTTPRequest多次重复请求的问题
- iOS ASIHTTPRequest 多次重复请求的问题
- ASIHTTPRequest多次重复请求的问题
- 点击按钮一次,多次请求的问题
- Volley重复请求的问题
- ios开发中asihttprequest请求,汉字乱码问题的解决
- WebUploader重复多次上传问题
- 控制服务器处理请求的数量(高并发)-防止用户重复点击导致多次请求
- 自定义adapter时getView多次重复调用的问题
- android中ListView多次重复执行getView的问题
- 解决emacs多次重复粘贴失效的问题
- 解决Toast快速点击,重复多次的问题
- 关于ListView中getView被重复调用多次的问题
- 解决Button多次点击重复执行方法的问题
- 【C#】AddHandler可重复多次添加事件处理器的问题
- iOS 基于runtime 解决UIButton重复点击 发送多次请求问题
- android中ListView多次刷新多次重复执行getView的问题另解
- 关于lua中事件监听,多次请求网络的问题
- BoneCP学习笔记
- shell的函数参数传递
- 使用私有API在iOS7.1上启动、卸载程序
- Android自定义发送有序广播
- ASP.NET__颗粒归仓
- ASIHTTPRequest多次重复请求的问题
- Java---14---多线程---synchronized 同步函数
- sudo: /etc/sudoers is mode 0777, should be 0440终极解决之道
- Android 开发 之 JNI入门 - NDK从入门到精通
- 利用GDI+实现gif图像背景透明
- 谭浩强C语言入门经典l例题292页——15
- 深入探索透视纹理映射(下)
- SharePoint开发 - 自定义导航菜单(三)附其他代码
- php const和define的区别(php类中如何定义常量)