4

Server HealthCheck ページを作成しています。ほとんどのサーバーは JSONObject を返し、次を使用して簡単に解析できます。

String jsonText = readAll(br);              
JSONObject json = new JSONObject(jsonText);
JSONObject resp = json.getJSONObject("Response");

今私の問題は、JSON を返さない他のサーバーです。一部は文字列を返し、一部は pdf ファイルと画像を返し、すべての応答が 200 OK であるため、Positive healthcheck を返す必要があります。

ただし、Future Threads を使用しており、4 秒後にリクエストをタイムアウトさせています。そして、JSON 以外のものを返すすべてのサーバーは、「 new JSONObject(jsonText);」 でスタックします。

応答のタイプがJSONかJavaでないかを確認する方法はありますか?

アップデート:

私は自分の間違いを見つけました - ばかげたものです。try catch ブロックでは、JSONException をキャッチしていない IOException のみをキャッチしています (また、エラーも表示されませんでした - わかりません)。今のところ私のソリューションで機能する JSONException の新しい catch ブロックを追加しました。

ただし、これはエレガントなソリューションではありません.@Dave、@Radai、および@Koiのソリューションは、適切なアプローチです。

4

2 に答える 2

1

response.getMediaType()を使用して、応答の MediaType を確認します。json の場合は、application/json を返します。

于 2015-02-07T04:23:07.190 に答える