我有一个奇怪的问题。我收到以下导致强制关闭的错误:
org.apache.harmony.xml.ExpatParser$ParseException:在第 1 行,第 0 列:在 org.apache.harmony.xml 的 org.apache.harmony.xml.ExpatParser.parseFragment(ExpatParser.java:508) 中找不到元素。 ExpatParser.parseDocument(ExpatParser.java:467) 在 org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:329) 在 org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:286)
单击“强制关闭”按钮后,将重新创建 Activity,并且解析顺利完成。我在 AsyncTask 的 doInBackground 中使用以下代码片段:
URL serverAddress = new URL(url[0]);
HttpURLConnection connection = (HttpURLConnection) serverAddress.openConnection();
connection.setRequestMethod("GET");
connection.setDoOutput(true);
connection.setReadTimeout(10000);
connection.connect();
InputStream stream = connection.getInputStream();
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
xr.parse(new InputSource(stream)); // The line that throws the exception
为什么 Activity 会强制关闭然后立即运行而没有任何问题?BufferedInputStream 会有什么不同吗?我很困惑。:(
谢谢大家的时间。
更新:事实证明 HttpURLConnection.getResponseCode() 经常返回 -1,因此 InputStream 可能没有正确设置。