- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这真的让我很烦,找到这里的问题对我来说非常重要。下面的 android 代码没有为我解压缩。
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet("http://www**************/get.php");
get.addHeader("Accept-Encoding", "gzip");
try {
HttpResponse response = client.execute(get);
InputStream instream = response.getEntity().getContent();
Header contentEncoding = response.getFirstHeader("Content-Encoding");
//Log msg header
Header[] header = response.getAllHeaders();
for(Header i : header) {
Log.d("TEST", i.getName() + ":" + i.getValue() );
}
if (contentEncoding.getValue().equalsIgnoreCase("gzip")) {
Log.d("TEST", "Content is gzipped");
try {
instream = new GZIPInputStream(instream);
processStream(instream);
} finally {
instream.close();
}
}
} catch (IOException e) {
e.printStackTrace();
}
Logcat 输出:
D/TEST ( 1067): Date:Fri, 03 Jun 2011 05:18:33 GMT
D/TEST ( 1067): Server:Apache
D/TEST ( 1067): X-Powered-By:PHP/5.2.10
D/TEST ( 1067): Content-Encoding:gzip
D/TEST ( 1067): Content-Length:765
D/TEST ( 1067): Connection:close
D/TEST ( 1067): Content-Type:application/json
D/TEST ( 1067): Content is gzipped
W/System.err( 1067): java.io.IOException: Unknown format
W/System.err( 1067): at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:85)
W/System.err( 1067): at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:66)
W/System.err( 1067): at com.mannotron.gallery.GalleryExample$GetImages.doInBackground(GalleryExample.java:69)
W/System.err( 1067): at com.mannotron.gallery.GalleryExample$GetImages.doInBackground(GalleryExample.java:1)
W/System.err( 1067): at android.os.AsyncTask$2.call(AsyncTask.java:185)
W/System.err( 1067): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
W/System.err( 1067): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
W/System.err( 1067): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
W/System.err( 1067): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
W/System.err( 1067): at java.lang.Thread.run(Thread.java:1096)
编辑:添加了 php 代码
服务器端 php:
//ob_start('ob_gzhandler');
header("HTTP/1.1 200 OK");
header("Content-Type: application/json");
header("Content-Encoding: gzip");
$dbhost = "xxxxxx";
$dbname = "xxxxxx";
$user = "xxxxxx";
$pass = "xxxxxx";
//Open databse connection
$db = new mysqli($dbhost,$user,$pass,$dbname) or die('Error opening db');
$query = "SELECT * FROM Spots; ";
$result = null;
$result = $db->query($query);
$data = array();
while($row = $result->fetch_assoc()) {
$data [] = $row;
}
$spots = '{"spots":'.json_encode($data)."}";
echo gzencode($spots,FORCE_GZIP);
$db->close();
//ob_flush();
?>
我已经在 php 的服务器端尝试了 gz_encode() 和 outputbuffering 与 gzip。谁能看到我做错了什么?感谢您的宝贵时间。
最佳答案
流看起来不对,因为它应该以“1f8b”开头。原因可能是您的 php 文件中有一个杂散的“a”。但是发布的样本似乎没问题。
关于php - Android GZIPInputStream 无法识别 gzip 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6223420/
GZIP 的大小限制为 4GB,从 http://www.gzip.org/#faq10 获取上面的链接中提到了一些补丁,可以读取超过 4GB 的文件。 我正在使用 GZIPInputStream 读
我需要清楚地了解 GZIPInputstream 的工作原理。我创建了 FileInputStream 对象并将其传递给 GZIPInputstream 以读取我的 config.tar.gz 文件。
简而言之,问题是每当我添加 GZipInputStream 和 GZipOutputStream 时,我的数据就会损坏。没有它们,一切都可以正常工作。 我有以下代码: public boolean l
我在解压缩文件时遇到了一个奇怪的问题,我正在考虑为此使用字符集 UTF-8。我正在使用 Guava 库。 public static byte[] gzip(final CharSequence cs
我有一个包含拉丁文、西里尔文和中文字符的文本。我尝试使用 GZIPOutputStream 压缩字符串(通过 bytes[])并使用 GZIPInputStream 解压缩它。但我无法将所有角色转换回
我正在尝试将 HTTP 响应的 gzip 压缩正文转换为纯文本。我已获取此响应的字节数组并将其转换为 ByteArrayInputStream。然后我将其转换为 GZIPInputStream。我现在
我有一个 .gz 格式的文件。用于读取此文件的 java 类是 GZIPInputStream。但是,这个类并没有扩展 java 的 BufferedReader 类。结果,我无法逐行读取文件。我需要
我正在尝试使用 GZIPOutputStream 在客户端中对字符串进行编码,然后使用 GZIPOutputStream 在服务器中对字符串进行解码。 客户端代码(在初始套接字连接建立之后)是: //
我正在通过 GZIPInputStream 读取 gzip 压缩文件。我想一次读取大量数据,但无论我要求 GZIPInputStream 读取多少字节,它总是读取少得多的字节数。例如, val bAr
在下面的行中,当instream是GZIPInputStream时,我发现c的值是完全随机的,要么大于或小于1024。但是当instream是FileInputStream时,返回值始终是1024。
我在使用 SharpZipLib 的 GZipInputStream 编写未压缩的 GZIP 流时遇到问题。我似乎只能获得 256 字节的数据,其余数据未写入并归零。已检查压缩流 (compresse
我有一个奇怪的程序,其中缓冲区的 GzipInputStream 零填充部分。我有幸知道字节在流中应该是什么样子,我可以看到缓冲区中填充了 8 个正确的字节和 12 个零(不应为零) 字节应该像这样-
我正在尝试在 Java 中使用 GZIPInputStream 来解压缩来自 .NET 应用程序的图像数据(以 GZIP 格式压缩)。图像数据作为 base64 字符串传输,因为它作为 XML 文本同
作为引用,这是我收到的完整错误: java.io.EOFException: Unexpected end of ZLIB input stream at java.util.zip.Infl
场景是读取一个gzip文件(扩展名为.gz) 知道有 GZIPInputStream 类来处理这个。 这里是将文件对象转换为 GZIPStream 的代码。 FileInputStream fin =
我有一个从另一个 ByteArrayInputStream 构建的 GZIPInputStream。我想知道 gzip 数据的原始(未压缩)长度。虽然我可以读取到GZIPInputStream的末尾,
是否有任何适用于 J2ME 的 GZIPInputStream 实现。我更喜欢 Apache 样式许可证 最佳答案 IIRC phoneME project包括 GZIPInputStream 的实现
我正在尝试将一系列 Long 写入 GZIPOutputStream,希望稍后能解压缩这些数字。 当我尝试使用少量 Long 时,以下程序运行良好,但使用许多 Long 时会抛出异常,例如 (1024
我有一个静态辅助方法,负责从我们的 Rails 应用程序中获取压缩的 JSON 字符串,并在返回 String 表示之前解压缩数据。 我编写了两个 JUnit 测试,一个测试 JSON 是否正确解析,
我使用 Java BufferedReader 对象逐行读取指向有效 GZIP 存档的 GZIPInputStream,该存档包含 1,000 行 ASCII 文本,采用典型的 CSV 格式。代码如下
我是一名优秀的程序员,十分优秀!