现在大部分的iOS开发人员对于数据请求都是用了AFN。但是最近遇到了一个很坑的问题。
问题描述
公司的项目上线后,有用户反映登录不上账号。但是笔者反复检查自己的代码,但是在自己这边是可以的,完全没毛病。后让客服问了用户的手机型号以及操作系统( 6P ,iOS 9.35) 很幸运,公司一个小伙伴的手机条件和用户匹配。然后就是各种找问题。。。。。
用了抓包工具以及和后台配合,发现自己居然没有连接服务器,在Debug 模式下找到了问题。。 AFN的error信息如下:(坑爹啊,这个问题是时有时没有,而且就是再登录的时候才会出现。。。)
UserInfo={NSUnderlyingError=0x137d39380 {Error Domain=kCFErrorDomainCFNetwork Code=-1004 "(null)"
UserInfo={NSErrorPeerAddressKey={length = 16, capacity = 16, bytes = 0x100201bb341a9f540000000000000000},
_kCFStreamErrorCodeKey=-2200, _kCFStreamErrorDomainKey=4}}, NSErrorFailingURLStringKey=[FILTERED],
NSErrorFailingURLKey=[FILTERED], _kCFStreamErrorDomainKey=4,
_kCFStreamErrorCodeKey=-2200, NSLocalizedDescription=Could not connect to the server.}
一晚上的折腾,一直找资料,没有找到问题原因。。幸好第二天,找到了问题(万能的谷歌。。强大 开发必备)
原因是我们的服务器用了http2 协议 参考1 可以说苹果对于HTTP2 协议的支持还不太够(坑了),所以有时就会出现链接不到服务器。。
找到了问题,让我们的运维小伙伴把HTPP2协议改回到HTTP1.1协议,这问题就解决了 。。。。
解决问题链接:
解决问题
解决问题