Помогите получить успех NSURLConnection - PullRequest
1 голос
/ 22 января 2010

Приложение загружает файл (plist), который генерируется сервером. Для генерации файла серверу требуется слишком много времени, поэтому я хотел бы иметь возможность показывать прогресс (возможно, просмотр UIProgressView, но это не важно).

Поскольку загружаемый файл еще не был создан в начале запроса, мы не знаем expectedContentLength. Тем не менее, у меня есть возможность предоставлять обновления прогресса из самого скрипта [PHP]. Для этого я использую ob_flush() для каждой строки в файле, что прекрасно работает в браузере.

Но когда я делаю запрос из приложения, я получаю вызов от connection:didReceiveData: только после того, как скрипт завершит выполнение, так что это не очень полезно.

Итак, мой вопрос сводится к следующему:
Как я могу подключиться к выполнению такого php-скрипта из моего приложения?

Я не возражаю против отправки 2 запросов на сервер, первый, который генерирует файл и предоставляет обновления при этом, а затем еще один, чтобы загрузить фактический файл.

Поскольку ни один из моих методов делегата NSUrlConnection не вызывается до тех пор, пока запрос не завершится, что нужно сделать моему сценарию для запуска этих методов?

1 Ответ

1 голос
/ 22 января 2010

Ваша проблема, скорее всего, на сервере. Если сервер отправляет данные в процессе их обработки и эта обработка занимает значительное время, вам, вероятно, следует получить более одного уведомления о connection:didReceiveData:.

Существует некоторое обсуждение, которое может иметь отношение к руководству по PHP. http://php.net/manual/en/function.ob-flush.php

Я бы с помощью анализатора пакетов проверил, что сервер на самом деле отправляет данные постепенно, как вы ожидаете.

...