Как получить полный ответ для Groovy RestClient failed response

В настоящее время я получаю HttpResponseException, который имеет только statusCode. Как я могу получить полную реакцию?

вот код, который я использую

restClient = new RESTClient("http://${Server}")
try {
    HttpResponseDecorator resp = restClient.post(path,body,requestContentType)     
        as HttpResponseDecorator
    return JSONObject.fromObject(resp.getData()).get("topKey","");
    }
catch (HttpResponseException e) {
            error(e.toString())
    }

и он выводит только это:

[oaf.error] groovyx.net.http.HttpResponseException: Internal Server Error

2 ответов


добавить пользовательский обработчик не ответ:

        restClient = new RESTClient("http://${Server}")
        restClient.handler.failure = { resp, data ->
            resp.setData(data)
            String headers = ""
            resp.headers.each {
                headers = headers+"${it.name} : ${it.value}\n"
            }
            throw new HttpResponseException(resp.getStatus(),"HTTP call failed. Status code: ${resp.getStatus()}\n${headers}\n"+
                                            "Response: "+(resp as HttpResponseDecorator).getData())
            return resp
        }

фактически, вы можете извлечь полный ответ из выданного исключения. Например, если ваше пойманное исключение e и тело ответа JSON должно содержать поле с именем myCustomErrorCode, вы можете проверить его значение, глядя на e.response.data.myCustomErrorCode кроме e.statusCode.