Из документов:
Единственный случай, когда это сообщение не отправляется делегату, — это когда реализация протокола обнаруживает ошибку до того, как может быть создан ответ.
Справочник по классу NSURLConnectionDelegate
Таким образом, NSURLConnection может завершиться ошибкой до того, как получит ответ, но может и после. Поскольку connection:didFailWithError прекращает дальнейшие сообщения для этого соединения, могут произойти следующие два сценария:
- Соединение запускается, не получает ответа и вызывается соединение:didFailWithError.
- Соединение запускается и получает ответ, вызывается connection:didReceiveResponse:, затем по какой-то причине происходит сбой соединения (например, сетевое соединение может прерваться), прежде чем вызывается connectionDidFinishLoading.
Вам нужно будет получить код состояния HTTP из connection:didReceiveResponse, если этот метод не вызывается, код состояния отсутствует, поскольку он является частью ответа. Если вам нужно получить к нему доступ из connection:didFailWithError, вам нужно будет его записать.
Обратите внимание, что для получения кода состояния вам также потребуется преобразовать NSURLResponse в NSHTTPURLResponse следующим образом:
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
NSLog(@"Status code %ld", httpResponse.statusCode);
person
Ben Kelly
schedule
14.08.2015