关于使用asihttprequest请求无响应问题

3 篇文章 0 订阅

      最近在测试环境发现使用asihttprequest连续访问2次以上的请求,非第一个请求如果包含表单文件post的话,如果和前一个请求相隔比较短的话,会有服务器无响应的情况发生。(生产环境使用https却发现不存在这种情况,测试使用的http)

      刚开始以为可能的确是服务器接口有问题了,因为这种错误一般就是服务器的问题。但是后来发现使用其他方式请求,如使用fiddler模拟请求服务器是正常的,无论多少次。
于是对设备进行抓包。发现使用asihttprequest请求时,会复用上次请求的tcp连接,也就是长连接的概念。所以在request的header里面加上connection  为close的配置,发现错误依旧,抓包也发现header里还是keep-alive的。说明配置没生效。接着抓包研究了几天,也查询了asihttprequest框架的一些文档,发现shouldAttemptPersistentConnection 这个属性可以于是对设备进行抓包。发现使用asihttprequest请求时,会复用上次请求的tcp连接,也就是长连接的概念。所以在request的header里面加上connection  为close的配置,发现错误依旧,抓包也发现header里还是keep-alive的。说明配置没生效。接着抓包研究了几天,也查询了asihttprequest框架的一些文档,发现shouldAttemptPersistentConnection 这个属性可以设置request为短连接。

     验证后发现故障消失,抓包也发现每次请求都新起一个端口来连接。

    总结,一开始想设置短连接的思路是对的,可是常规设置无效,还是要参考框架资料才行。双管齐下研究问题。另外对于这些网络底层问题,抓包分析的确重要也直观。先是用了charles发现故障消失,后来发现应该是charles的代理之类。换成wireshark分析就重现问题了,所以还是要使用wireshark这种对于软件没有影响的东东观察才行。特此记录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值