【发布时间】:2011-02-27 02:20:37
【问题描述】:
我今天将手机更新为 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 连接的最可靠方法,因此这可能是重新编写连接代码的好借口。
【问题讨论】:
-
如果我将代码更改为使用 HttpClient 并在其上使用 HttpGet 请求,则效果很好。 URL.openStream() 函数中一定有问题。哦,好吧,希望这能帮助其他人节省一些时间。
标签: android gzip gzipinputstream