NSURLConnection и обработка кода ответа и данных ответа - PullRequest
3 голосов
/ 02 декабря 2008

У меня сейчас нечетный случай, когда код ответа от метода делегата NSURLConnection:

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response;

Запускается перед последующим методом делегата:

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data;

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

Какие существуют элегантные решения для соединения response и responseData таким образом, что мой метод классов не запускается до тех пор, пока response и responseData не станут 200 + не nil. Нужно ли устанавливать их как переменные экземпляра класса? Похоже, решение бедного человека.

1 Ответ

8 голосов
/ 02 декабря 2008

Ответ перед данными в правильном порядке. Фактически, вы должны очистить все данные в этом методе (в случае, если вы получаете несколько ответов посредством перенаправлений и любые промежуточные данные устаревают).

Вы получаете соединение: didReceiveResponse: сообщение о том, что заголовок ответа получен, но это происходит до любого содержимого тела.

Если вам нужен доступ ко всем элементам ответа, вы должны просто сохранить ответ и данные по мере их поступления и обрабатывать их только в connectionDidFinishLoading: (или если ваши данные длинные, вы можете обрабатывать их постепенно в соединении: didReceiveData :.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...