燃料在错误时得到身体反应

Mik*_*ick 6 android kotlin

我怎样才能做到这一点?这是我在做的请求。

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))
                    }
                }
            }
Run Code Online (Sandbox Code Playgroud)

我得到的回应是:

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]
Run Code Online (Sandbox Code Playgroud)

我想将正文消息作为我的错误返回。

Sam*_*tek 5

正如本期所提到的。您可以使用 接收正文response.data,它返回ByteArray。因此,代码可能如下所示:

val myBody = String(response.data)
Run Code Online (Sandbox Code Playgroud)

另一种解决方案是禁用HTTP 代码验证器,可以通过以下方式实现:FuelManager.removeAllResponseInterceptors()


小智 4

如果您的代码使用awaitByteArrayResponseand getsResult<?, FuelError>>FuelErrorobject,请尝试以下操作: val (content, error) = result // Result<?, FuelError>> val strContent = error.errorData.toString(Charsets.UTF_8)