1

该应用程序正在下载由服务器生成的文件(plist)。服务器需要很长时间才能生成文件,所以我希望能够显示进度(可能查看 UIProgressView,但这并不重要)。

由于我正在下载的文件在请求开始时尚未创建,因此我们不知道expectedContentLength. 但是,我有办法从 [PHP] 脚本本身提供进度更新。我正在使用ob_flush()文件中的每一行来执行此操作,这在浏览器中运行良好。

但是当我从应用程序发出请求时,我只是connection:didReceiveData:在脚本完成执行后才接到一个电话,所以这没什么用。

所以我的问题归结为:
如何从我的应用程序中获取这样一个 php 脚本的进度?

我不介意向服务器发送 2 个请求,第一个请求生成文件并在执行此操作时提供更新,然后另一个请求下载实际文件。

由于在请求完成之前没有调用我的 NSUrlConnection 委托方法,所以我的脚本需要做什么来触发这些方法?

4

1 回答 1

1

您的问题很可能出在服务器上。如果服务器在处理数据时正在发送数据,并且该处理需要大量时间,您可能会收到不止一个connection:didReceiveData:.

PHP手册中有一些可能相关的讨论。 http://php.net/manual/en/function.ob-flush.php

我将使用数据包分析器验证服务器实际上是按照您的预期增量发送数据。

于 2010-01-22T07:45:52.903 回答