REST クライアントとして Unirest を使用しています。以下は、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 サービス エラーを取得するにはどうすればよいでしょうか。