Я звоню на сторонний сервер из Cloud Code. Первый может возвращать ошибки HTTP, которые я хочу передать вызывающему приложению iOS.
Я хочу, чтобы мое приложение для iOS обрабатывало сведения об ошибке HTTP, когда сторонний сервер выдает исключение HTTP.
Единственный способ, который я нашел до сих пор, — рассматривать эти исключения как «успех» облачного кода!
Есть ли способ лучше?
Пример Когда сторонний сервер возвращает ошибку HTTP 400 «Отсутствует имя»:
Из моего облачного кода я могу позвонить:
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 вместе с успешными вызовами.