该应用正在下载由服务器生成的文件(plist)。服务器花了很长时间来生成文件,所以我希望能够显示进度(可能会查看UIProgressView,但这并不重要)。
由于我正在下载的文件尚未在请求开始时创建,因此我们不知道expectedContentLength
。但是,我有办法从[PHP]脚本本身提供进度更新。我正在为文件中的每一行使用ob_flush()
来执行此操作,这在浏览器中运行良好。
但是当我从应用程序发出请求时,我只是在脚本执行完之后才从connection:didReceiveData:
接到一个电话,所以这没用多少。
所以我的问题可以归结为:
如何从我的应用中了解这样一个php脚本的进度?
我不介意向服务器发送2个请求,第一个生成文件并提供更新,然后另一个请求下载实际文件。
由于在请求完成之前我的NSUrlConnection委托方法都没有被调用,我的脚本需要做些什么才能触发这些方法?
答案 0 :(得分:1)
您的问题很可能是在服务器上。如果服务器在处理数据时发送数据并且处理需要花费大量时间,那么您应该获得多个connection:didReceiveData:
通知。
有一些讨论可能与PHP手册有关。 http://php.net/manual/en/function.ob-flush.php
我会使用数据包分析器验证服务器实际上是按照您的预期递增地发送数据。