在PHP中使用gzcompress;需要能够在iPhone上解压缩

4

我相信这并不难(但我很惊讶自己想不出来),以下是问题:

我正在使用PHP中的gzcompress()函数压缩JSON数据,以便将其发送到iPhone应用程序。

现在我遇到了一些问题,无法解压缩此数据(iOS上)。

有什么想法吗?我通过NSMutableURLRequest获取数据。

谢谢!


发起请求的代码:

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:theURL]];
[[NSURLConnection alloc] initWithRequest:request delegate:self];

处理响应的代码:

NSString *responseString = [[[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding] autorelease];

在PHP端:

echo(gzcompress(json_encode($lines)));

谢谢!!!

你可以在你的问题中包含一些代码吗? - user142162
1
在你的php文件顶部添加ob_start("ob_gzhandler");。这将压缩你的php脚本“发送”的所有数据。当你通过URL请求获取它时,它应该无缝解码。 - alexyorke
alexy13 -- 是的,我想那就是了。我从 PHP 中删除了 gzcompress() 并添加了你的代码行,看起来传输速度提高了约 10 倍。谢谢! - Josh Knowles
1个回答

1

这篇文章建议NSMutableURLRequest支持开箱即用的gzip解压缩,但您需要在请求中添加Accept-Encoding: gzip头。

扩展您的示例:

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:theURL]];
[request setValue:@"gzip" forHTTPHeaderField:@"Accept-Encoding"];
[[NSURLConnection alloc] initWithRequest:request delegate:self];

我还建议使用cURL测试PHP脚本,以确保它发送有效的gzipped数据。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接