我今天将手机更新为 Gingerbread(2.3.2)并启动了我开发的应用程序,发现它无法加载数据。该应用程序在我测试过的从 1.6 到 2.2 的所有其他版本的 Android 上运行良好,但随后在 Gingerbread 中出现 IOException。有人知道 GZipInputStream 或 URL.openStream() 是否发生了变化?
有问题的代码类似于以下内容:
InputStream in = null;
GZIPInputStream zin = null;
URL url = null;
try {
url = new URL("http://www.test.com/gzipped_data.gz");
in = url.openStream();
zin = new GZIPInputStream(in);
}
catch (MalformedURLException e) {
return false;
}
catch (IOException e) {
return false;
}
在 1.6 到 2.2 中,此代码工作正常,在 2.3 中,我收到一个 IOException,其中包含有关魔术块不正确的消息。我假设 openStream 发生了一些变化,这会弄乱 MIME 类型或此数据上的某些内容。我在其他地方读到 openStream 不是处理 HTTP 连接的最可靠方法,因此这可能是重新编写连接代码的好借口。