От apple's doc- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error
сообщит только об ошибке на стороне клиента через параметр ошибки.Лучшая практика обработки HTTP-ошибок с помощью NSURLSession?
Примечание: NSURLSession не сообщает об ошибках сервера через параметр ошибки. Единственными ошибками, которые ваше приложение получает через параметр ошибки, являются ошибки на стороне клиента, такие как невозможность разрешить имя хоста или подключиться к хосту. Коды ошибок описаны в кодах ошибок загрузки URL. Ошибки на стороне сервера сообщаются через код состояния HTTP в объекте NSHTTPURLResponse.
Но тем не менее, когда я испытываю в iOS9 с NSURLSessionDataTask
, кажется, в настоящее время яблока отображается ошибка HTTP для NSURLError
. Например, 404
to NSURLErrorFileDoesNotExist
. Этот факт ломает некоторые предположения, что мы имели раньше, и many snippet also take the error parameter as connection error, это будет абсолютно неправильно.
Я стараюсь Seach и найти Apple, возможно, упоминается только это изменение в NSURLSessionDownloadTask
. И не очень хорошо документировано, как применяется эта карта.
В отличие от NSURLSessionDataTask или NSURLSessionUploadTask, NSURLSessionDownloadTask сообщает серверные ошибки сообщенные посредством кодов состояния HTTP, в соответствующие объекты NSError.
Лично я думаю, что команда от Apple Dev сделал большую ошибку; И документ по-прежнему несовместим и не выдерживает, даже два года не прошли никаких обновлений.
У кого-нибудь есть дополнительная информация об этом изменении, когда это введено? И что лучше всего отличить ошибку соединения и ошибку HTTP сейчас.
попробуйте найти этот ответ: http: // stackoverflow.com/questions/2342579/http-status-code-for-update-and-delete? rq = 1 – Wink
Каков соответствующий ответ/обсуждение по этой ссылке? – marosoaie