如何处理 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?的主要内容,如果未能解决你的问题,请参考以下文章
如何处理 http 错误(FormatException: Unexpected end of input (at character 1))