gpt4 book ai didi

java - 在 Unirest 中获取 native REST 服务错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:18:25 24 4
gpt4 key购买 nike

我们使用 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 服务错误?

最佳答案

由于您不能依赖返回的内容类型,解决方法是将响应视为字符串:

  HttpResponse<String> response = Unirest
.post(url)
.header(HEADER_CONTENT_TYPE, HEADER_VALUE_APPLICATON_JSON)
.body(payload)
.asString();

这样您就可以访问返回状态代码。 Unirest 不会尝试将结果解析为 JSON,因此您需要自己进行解析(如果状态码指示成功)。

关于java - 在 Unirest 中获取 native REST 服务错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33970600/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com