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のソリューションは、適切なアプローチです。