Перенаправление на тот же URL крайне расточительно.По крайней мере, присвойте «заданию» идентификатор и верните его вызывающему приложению.Затем он может опросить сервер, передав идентификатор, чтобы увидеть, когда задание будет завершено.Вы не должны опрашивать слишком часто, возможно, раз в несколько секунд.
Вы также можете просто использовать один запрос-ответ.Ваш сервер просто не ответит, пока не получит данные.На iPhone время ожидания по умолчанию установлено на 60 секунд.Ваш сервер может начать ответ (записать немного данных), чтобы установить соединение;но не завершайте и не закрывайте соединение, пока обработка не завершится.
Наконец, если вы делаете простой запрос ... с большой задержкой ... ответ;и ожидайте, что это займет> 60 секунд - рассмотрите возможность увеличения времени ожидания запроса с помощью NSMutableURLRequest's setTimeoutInterval .
Примечание: в вашем примере вы используете синхронный запрос.Если вы сделаете это вне потока, ваше приложение может заблокироваться.Если он блокируется на> 20 секунд, он будет убит службой контроля.Очень легко использовать асинхронные методы с делегатами, чтобы перехватить ответы, так что давайте им развернуться.
Наконец, если вы используете асинхронные методы;вы можете перехватить 3xx и обработать его самостоятельно;но вы знаете, ваша техника перенаправления кажется злой, поэтому не делайте этого.