swift 开发中遇见的NSURLErrorDomain的-1005错误总结

本文总结了在使用Swift开发中遇到的NSURLErrorDomain -1005错误,该错误通常与HTTP长链接有关。HTTP1.1默认采用长链接,但服务器和客户端若未能正确处理Keep-Alive时长可能导致连接断开。在iOS上,使用Alamofire框架时可能会遇到此问题。解决办法包括在服务器端延长长连接时长或禁止对iOS设备使用长链接,而在客户端则可以重写请求底层或实现请求重试机制。

HTTP的长链接于端链接:

在HTTP1.0中,默认的连接都是短链接,当发生一个http请求时会产生一个tcp连接,请求结束时会关闭tcp连接

在HTTP1.1开始,所有的默认连接就是进行的长链接,即在一次连接后,服务器于客户端之间建立的TCP连接并不是立即断开的。而是按照约定的Keep-Alive时长维持一定时间的连接状态。

iOS中的1005错误问题:

我在使用Alamfire框架时出现了1005网络无连接错误问题,Alamfire是AFNetWorking的swift版本

出现此处问题的原因是当我去请求HTTP连接时,服务器准备复用TCP连接时发现长链接的维持时长已经超过了服务器的约定时长导致复用时出现了连接已经断开的问题

服务器端解决此类问题:

1、提高服务器长连接约定时长,30s以上,会有浪费服务器性能缺陷

2、针对iOS用户禁止长链接

客户端解决此类问题:

1、重写http请求底层

2、重试http请求,无连接时再次请求(捕捉1005错误时进行数据请求)


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值