我们使用 Unirest 作为 REST 客户端。下面是我们用来调用 REST 服务的示例代码
HttpResponse<JsonNode> response = Unirest
.post(url)
.header(HEADER_CONTENT_TYPE, HEADER_VALUE_APPLICATON_JSON)
.body(payload)
.asJson();
这绝对是 REST 服务返回 json 的时候。如果出现错误,我正在使用的 REST 服务不会返回 json 响应。相反,它返回 html 错误页面。
由于 Unirest 正在尝试将 html 转换为 json,因此出现以下问题
Caused by: com.mashape.unirest.http.exceptions.UnirestException: java.lang.RuntimeException: java.lang.RuntimeException: org.json.JSONException: A JSONArray text must start with '[' at 1 [character 2 line 1]
at com.mashape.unirest.http.HttpClientHelper.request(HttpClientHelper.java:143)
at com.mashape.unirest.request.BaseRequest.asJson(BaseRequest.java:68)
在这种情况下,我们只是得到了这个 InvalidJsonException 并且实际的 html 错误页面丢失了。我们需要在我们的应用程序中显示 html 错误页面以防出错。
在这种情况下,我们如何获得原始 REST 服务错误?