今日、携帯電話を 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 が発生します。MIME タイプまたはこのデータの何かを台無しにしている openStream で何かが変更されたと想定しています。openStream は HTTP 接続を処理する最も信頼できる方法ではないという他の場所を読んだので、これは接続コードを作り直す良い言い訳になるかもしれません。