sag*_*sag 9 java json unirest mashape
我们使用Unirest作为REST客户端.下面是我们调用REST服务的示例代码
HttpResponse<JsonNode> response = Unirest
.post(url)
.header(HEADER_CONTENT_TYPE, HEADER_VALUE_APPLICATON_JSON)
.body(payload)
.asJson();
Run Code Online (Sandbox Code Playgroud)
当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)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我们只是得到这个InvalidJsonException并且实际的html错误页面丢失了.我们需要在出现错误时在我们的应用程序中显示html错误页面.
在这种情况下,我们如何才能获得原始的REST服务错误?
由于您不能依赖返回的内容类型,因此解决方法是将响应视为String:
HttpResponse<String> response = Unirest
.post(url)
.header(HEADER_CONTENT_TYPE, HEADER_VALUE_APPLICATON_JSON)
.body(payload)
.asString();
Run Code Online (Sandbox Code Playgroud)
这样您就可以访问返回状态代码.Unirest不会尝试将结果解析为JSON,因此您需要自己完成(如果状态代码表示成功).
归档时间: |
|
查看次数: |
5452 次 |
最近记录: |