Как справиться с преобразованием Parse.com ошибки HTTP в NSError?

Я звоню на сторонний сервер из 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 вместе с успешными вызовами.


person Carl    schedule 22.10.2015    source источник


Ответы (1)


Вы потенциально можете настроить сообщение/данные об ошибке, но, к сожалению, вы не можете изменить код ошибки 141, если используете метод response.error(). См. это.

person Mo Nazemi    schedule 22.10.2015