应用启动后几秒内NSURLErrorDomain Code = -1004

Seb*_*Kim 22 ios afnetworking alamofire ios9

我在Alamofire API调用时出现"NSURLErrorDomain Code = -1004"错误,但仅在应用程序启动后几秒钟(或在应用程序打开后休息几分钟并在此之后拨打电话)

如果我在几秒钟之后尝试拨打同一个电话,一切正常.我搜索了所有Stack Overflow问题并检查了以下所有可能的原因:

  1. 互联网连接没问题
  2. "应用程序传输安全设置"是正确的,服务器使用https(我也试过"NSAllowsArbitraryLoads = true",但没有帮助)
  3. API工作正常

我的直觉是,获取网络设置需要几秒钟,当我在完成之前进行API调用时,它会立即失败.或者..我在后台使用Websocket可能是相关的?

FAILURE:Error Domain = NSURLErrorDomain Code = -1004"无法连接到服务器." 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 =无法连接到服务器.}

有什么建议?

更新

发现应用程序在启动时发出4个请求,其中1个或2个随机失败,我检查了Nginx访问和错误日​​志,并且根本没有记录失败的调用.

Adr*_*nig 17

我们在Nginx 1.10.0(和1.9.15),iOS 9.3.1使用带有TLS 1.2的HTTP/2时遇到了同样的问题.

这个问题在HTTP/1.1中消失了,它也在Nginx版本中使用HTTP/2,最高可达1.9.14.

  • 哦,非常感谢这个信息!我花了两天时间找到解决方案.我尝试了许多App Transport Security设置,http libs等. (2认同)

Eri*_*206 6

Nginx 1.11.0 Mainline现在可以使用本主题前面提到的修复程序;

更改:HTTP/2客户端现在可以立即开始发送请求正文; "http2_body_preread_size"指令控制在nginx开始读取客户端请求体之前使用的缓冲区的大小.

我测试了它,对我来说这个版本现在再次正常工作.