我正在创建Server HealthCheck页面。大多数服务器返回的JSONObject和我能够轻松地使用它解析:Java - 检查响应是否为JSON
String jsonText = readAll(br);
JSONObject json = new JSONObject(jsonText);
JSONObject resp = json.getJSONObject("Response");
现在我的问题是,不返回JSON的其他服务器。有些正在返回字符串,一些PDF文件的一些图像和所有的答复是200好我应该返回正面健康检查。
但是我正在使用未来线程并在4秒后超时我的请求。而且所有返回JSON以外的服务器都会卡住“new JSONObject(jsonText);”
有没有什么办法可以检查在Java中的响应类型是否是JSON?
更新:
,我发现我的错误 - 愚蠢的一个。 在try catch块中,我只捕获IOException,它不捕获JSONException(并没有显示任何错误 - 不知道y)。我已经为JSONException添加了一个新的catch块,它现在适用于我的解决方案。
但是,这不是一个优雅的解决方案,@Dave,@Radai和@Koi的解决方案是正确的解决方案。
尝试将其解析为JSON。如果它不解析,那不是JSON。检查响应的内容类型。如果是文件检查扩展名。等等 –
他们为什么卡住了?我希望抛出一些异常..你是将整个响应读入一个字符串还是直接从输入流中运行json解析器? – radai
戴夫我已经试图解析它为JSON。 我正在接受字符串“jsonText”中的响应,然后将此文本放入JSONObject中。我陷入了第二步。 –