NSURLRequest с входным потоком HTTPBody: поток отправляет событие перед открытием - PullRequest
2 голосов
/ 05 августа 2010

Я хочу отправить большой объем данных на сервер, используя NSURLConnectionNSURLRequest). Для этого я создаю связанную пару NSStream с (используя CFStreamCreateBoundPair(...)). Затем я передаю входной поток в NSURLRequest (-setHTTPBodyStream:) и планирую выходной поток в текущем цикле выполнения. Когда цикл выполнения продолжается, я получаю события для отправки данных, и поток ввода отправляет эти данные на сервер.

Моя проблема в том, что это работает только тогда, когда данные помещаются в буфер между парными потоками. Если данные больше, то каким-то образом входной поток получает событие (я полагаю, «доступны байты»), но NSURLConnection еще не открыл входной поток. Это приводит к печатанию сообщения об ошибке, и данные не отправляются.

Я пытался уловить это в моем методе -stream:handleEvent:, просто возвращая, если входной поток еще не открыт, но затем мой выходной поток получает событие закрытия потока (возможно, потому что я никогда не отправлял данные, когда мог).

Итак, мой вопрос: как правильно использовать связанную пару потоков с NSURLConnection?

(Если это имеет значение: я занимаюсь разработкой на платформе iOS)

Любая помощь приветствуется!

Приветствия, Маркус

1 Ответ

1 голос
/ 19 августа 2010

Хорошо, я вроде исправил это, начав отсрочку загрузки, чтобы она начиналась после того, как NSURLConnection успел настроить свой входной поток.

Это не то, что я называю чистым решением, так какполагаться на -performSelector:withObject:afterDelay: кажется немного глупым.

Так что, если у кого-то еще есть решение этого вопроса, я по-прежнему открыт для любых предложений.

...