来自 HTTP 状态码的 NSError
Posted
技术标签:
【中文标题】来自 HTTP 状态码的 NSError【英文标题】:NSError from HTTP status code 【发布时间】:2015-04-27 23:13:32 【问题描述】:根据标准 HTTP 状态代码(理想情况下,在 localizedDescription
中包含一些人类可读消息)创建 NSError
对象的最佳方法是什么?是否有标准方法或者我应该创建自己的错误域以与NSError
一起使用?
【问题讨论】:
相关:***.com/questions/1779034/… 【参考方案1】:Foundation 执行网络请求的对象通常会为您返回这些NSError
s。例如,NSURLConnection
将在其+sendAsynchronousRequest:queue:completionHandler:
方法的completionHandler
中提供NSError
。
如果您想自己动手,可以创建一个NSError
的实例,将其错误域设置为NSURLErrorDomain
,将其code
设置为您想要的HTTP 状态代码,然后将其设置为localizedDescription
成为您需要的人类可读字符串。
【讨论】:
在我看来,将自己的错误代码添加到我无法控制的域是一个坏主意。 是的,你也可以有自己的错误域,这可能无法回答你有股票 NSURLErrors 的问题 当连接成功,服务器返回错误码时,传递给completionHandler
的NSError?
为nil
。
如果这个答案是正确的,我会喜欢它,但它似乎是错误的。我检查过的最明显的状态码——404 和 500——根本不返回任何NSError
,只返回nil
。
这是不正确的——只有在 NETWORKING 层失败时才会创建 NSError。如果联网成功,并且服务器发送了 402 状态,则不会创建 NSError。我一直在寻找这样的代码来为大量的 http 状态场景构建一个健壮的 NSError 表示。以上是关于来自 HTTP 状态码的 NSError的主要内容,如果未能解决你的问题,请参考以下文章
如果没有来自 WebAPI 的帮助器,这不可能是从 MVC6 返回状态码的最佳方式,不是吗?
PIN 码的“达到最大尝试次数”的最佳 HTTP 状态码是啥?