Топливо получит отклик кузова на ошибку - PullRequest
0 голосов
/ 03 мая 2018

Как мне этого добиться? Это запрос, который я делаю.

Fuel.get(url)
    .timeout(TIMEOUT)
    .body(myRequest.parameters!!, Charsets.UTF_8)
    .responseString() { _, response, result ->
                Log.e("result", "$result")
                when (result) {
                    is Result.Success -> {
                        completionHandler(result.get(), null)
                    }
                    is Result.Failure -> {
                        Log.e("fail", "${response}")
                        completionHandler(null, Error(response.responseMessage))
                    }
                }
            }

И я получаю ответ:

Response : Bad Request
Length : 122
Body : ({"message":"You have already booked that iceCream"})
Headers : (9)
Connection : [keep-alive]
Content-Length : [122]
Content-Type : [application/json; charset=utf-8]
Date : [Thu, 03 May 2018 07:33:21 GMT]
Server : [nginx/1.12.1]

Я хочу вернуть тело сообщения как мою ошибку.

Ответы [ 4 ]

0 голосов
/ 11 января 2019

Я наткнулся на ту же проблему и сделал следующее, чтобы получить сообщение об ошибке из тела ответа:

// Body : ({"message":"Not allowed to do this!"})
val errorMessage = Json(String(error.response.data)).obj().getString("message")

К сожалению, я не вижу более элегантного способа сделать это, поскольку в исходном коде Fuel атрибут body объявлен как внутренний.

0 голосов
/ 09 августа 2018

Как уже упоминалось в этом выпуске . Вы можете получить тело с response.data, которое возвращает ByteArray. Поэтому код может выглядеть примерно так:

val myBody = String(response.data)

Другим решением было бы отключение валидатора HTTP-кода , чего можно достичь с помощью: FuelManager.removeAllResponseInterceptors()

0 голосов
/ 06 ноября 2018

, если ваш код использует awaitByteArrayResponse и получил объект Result<?, FuelError>> или FuelError, попробуйте это: val (content, error) = result // Result<?, FuelError>> val strContent = error.errorData.toString(Charsets.UTF_8)

0 голосов
/ 03 мая 2018

Как бы то ни было, я решил это, выложив сообщение. Но Fuel - это большая уважаемая библиотека, так что, вероятно, есть и другой, более привлекательный способ. Но это работает:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...