【发布时间】:2016-11-08 02:49:49
【问题描述】:
我的 iOS 应用程序使用 NSURLSessionConfiguration、NSURLSession、NSURLSessionDownloadTask 等来下载我们的服务器从数据库中动态生成的 xml 文件。下载一切正常,直到我尝试从一个特定帐户下载更大的文件。我们的服务器必须做很多工作才能为该帐户提供 xml。换句话说,在服务器实际吐出请求的 xml 之前,有一个相当长的等待时间。对于这个最大的帐户,iOS 客户端永远不会收到数据,即使服务器成功处理了数据并报告将其发送给客户端。
在测试时,我们发现了一些奇怪的东西:
- 我们无法在任何 Safari 浏览器(桌面或 iOS)中下载相同的 XML
- 我们可以在桌面上使用 Chrome 下载 XML
- 我们可以在命令行使用 curl 下载 XML
- 在我们的 iOS 应用程序中,无法将 XML 下载到设备或模拟器中
我同时调高了 timeoutIntervalForRequest 和 timeoutIntervalForResource。它本身并不是“超时”。但是,Apple 的网络堆栈中的某些东西似乎不允许长时间等待服务器生成 XML。为什么 Chrome 和 curl 没有问题,但 Safari 和我的 iOS 代码有问题?所以,我对这里发生的事情有些茫然。
这是旧的服务器代码,将来会更改为 JSON 和更快的类,因此我不需要任何“更改您的服务器代码”答案。
对我有什么想法吗?提前致谢。
【问题讨论】:
-
我也尝试过 AFNetworking 和 curl,它们在一个项目中都失败了。但是我可以在终端中运行相同的 curl 并且它可以工作。
标签: ios google-chrome curl safari nsurlsessiondownloadtask