如何处理 Parse.com 将 HTTP 错误转换为 NSError?

Posted

技术标签:

【中文标题】如何处理 Parse.com 将 HTTP 错误转换为 NSError?【英文标题】:How to handle Parse.com's transformation of a HTTP error to a NSError? 【发布时间】:2015-10-22 11:19:54 【问题描述】:

我正在从 Cloud Code 调用第 3 方服务器。前者可以返回我想传递给调用 ios 应用程序的 HTTP 错误。

我希望我的 iOS 应用在第 3 方服务器抛出 HTTP 异常时处理 HTTP 错误详细信息。

到目前为止,我发现的唯一方法是将这些异常视为云代码“成功”!

有没有更好的办法?

一个例子 当第 3 方服务器返回 HTTP 400 时,“Missing Name”错误:

我可以通过我的云代码调用:

response.error(httpResponse);

然后在 Swift 中我可以用以下方式解析它:

PFCloud.callFunctionInBackground("func", withParameters:[]) 
    (result, error) -> Void in
    if error == nil 
        // handle success
     else 
        // handle error
        // Parse.com has wrapped the originating http error with a status code of 141 so I'll need to JSON parse the deeper fields to get 400 & "Missing Name".
    

但是,相反,我可以从 Cloud Code 调用 response.success(httpResponse),然后执行以下操作:

PFCloud.callFunctionInBackground("func", withParameters:[]) 
    (result, error) -> Void in
    if error == nil 
      let result = result as! [String:AnyObject]
      let status = result["status"]     
      let text = result["text"] as! String
      // status will be 400
      // text will be "Missing Name"
     else 
       // handle Parse.com's 141s
    

这使得字段解析更易于访问。但我正在处理 HTTP 错误以及成功的调用。

【问题讨论】:

【参考方案1】:

您可以自定义错误消息/数据,但不幸的是,如果您使用 response.error() 方法,则无法更改错误代码 141。见this

【讨论】:

以上是关于如何处理 Parse.com 将 HTTP 错误转换为 NSError?的主要内容,如果未能解决你的问题,请参考以下文章

Nginx如何处理手机端和PC端跳转不同页面

Node.js - 如何处理流错误事件

如何处理 http 错误(FormatException: Unexpected end of input (at character 1))

[当PHP代码失败但发送200时如何处理AJAX?

如何处理 HTTP 412(前提条件失败)- 设备处于非活动状态

nginx 错误调试应该如何处理?