【发布时间】:2016-11-02 08:20:50
【问题描述】:
来自apple's doc- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error只会通过error参数报客户端错误。
注意:NSURLSession 不会通过 error 参数报告服务器错误。您的应用通过 error 参数收到的唯一错误是客户端错误,例如无法解析主机名或无法连接到主机。 URL 加载系统错误代码中描述了错误代码。 服务器端错误通过 NSHTTPURLResponse 对象中的 HTTP 状态代码报告。
但是,当我在 iOS9 中使用 NSURLSessionDataTask 进行测试时,苹果目前似乎将一些 HTTP 错误映射到 NSURLError。例如,404 to NSURLErrorFileDoesNotExist。这个事实打破了我们之前的一些假设,many snippet also take the error parameter as connection error,这绝对是错误的。
我尝试搜索并发现Apple 可能只在NSURLSessionDownloadTask 中提到了此更改。并且没有很好地记录这些地图是如何应用的。
与 NSURLSessionDataTask 或 NSURLSessionUploadTask 不同,NSURLSessionDownloadTask 将通过 HTTP 状态码报告的服务器端错误报告到相应的 NSError 对象中。
我个人认为苹果的开发团队犯了一个很大的错误;而且文件仍然不一致,不真实,甚至两年过去了没有任何更新。
任何人都知道有关此更改的更多信息,何时引入?以及现在区分连接错误和 HTTP 错误的最佳方法是什么。
【问题讨论】:
-
该链接的相关答案/讨论是什么?
标签: ios nsurlconnection nsurlsession nsurlsessiondownloadtask