Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何检查响应是否为xml格式而不是HTML格式?_Java_Android_Xml_Http - Fatal编程技术网

Java 如何检查响应是否为xml格式而不是HTML格式?

Java 如何检查响应是否为xml格式而不是HTML格式?,java,android,xml,http,Java,Android,Xml,Http,我使用的服务器总是向我发送XML响应。但有时,当服务器缺失或出现问题时,它会通过向我发回一个HTML页面(这只是一个通知错误的HTML页面)来报告,但我没想到,我的XML解析器崩溃了。 我使用DefaultHttpClient()发送头,比如mhtprequest.setHeader(“接受”,“文本/xml”) 那么,什么是确保我得到XML(或其他特定格式)响应的正确方法呢?您能检查响应上的内容类型标题吗 比如(如果我理解正确的话): 正如Kristian所建议的,看看它在发出HTML时是否提


我使用的服务器总是向我发送XML响应。但有时,当服务器缺失或出现问题时,它会通过向我发回一个HTML页面(这只是一个通知错误的HTML页面)来报告,但我没想到,我的XML解析器崩溃了。
我使用DefaultHttpClient()发送头,比如
mhtprequest.setHeader(“接受”,“文本/xml”)

那么,什么是确保我得到XML(或其他特定格式)响应的正确方法呢?

您能检查响应上的内容类型标题吗

比如(如果我理解正确的话):


正如Kristian所建议的,看看它在发出HTML时是否提供了不同的内容类型。如果失败,我将检查是否有
每个XML在开头都包含文档描述符
。您可以在解析它之前检查它


但是,我认为您需要在解析器中进行一些错误处理和结果验证。网络不是一个安全的环境-您可以很容易地从网络中获取半破损、格式错误甚至伪造的XML。好的解析器应该检测并报告相应的错误,而不仅仅是崩溃。

您是否正确地检查了响应的状态代码?如果这是一个导致HTML页面的错误,你不应该得到200 OK。目前我没有,我想你是对的。我将尝试处理返回的代码我实际上认为不是每个xml文档都会以它开始,它可能不是UTF-8。。。但是,有效的XML文档需要XML声明。(再说一遍,世界并不完美:-)我明白了。它只是报告了一个捕获到的异常。它不会使整个应用程序崩溃。(一般来说)它可能不仅仅是“text/xml”——atom提要是一个非常引人注目(而且很常见)的反例。最好是查找匹配“/xml”和/或“+xml”的MIME。看见
"text/xml".equals(httpResponse.getEntity().getContentType().getValue());