gpt4 book ai didi

php - Android GZIPInputStream 无法识别 gzip 格式

转载 作者:行者123 更新时间:2023-11-29 00:46:18 24 4
gpt4 key购买 nike

这真的让我很烦,找到这里的问题对我来说非常重要。下面的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com