6

现在我知道 xCode 会自动为您执行 GZip decrompession:

NSData *data = [NSData dataWithContentsOfURL:URL];

如果我指向服务器上的 Gzip 文件,它确实有效。但由于我的内容是动态的,我有一个 PHP 脚本,而不是像这样创建一个 gzip 文件:

$zp   = gzopen($file, "r");
$data = gzread($zp, $filesize);
gzclose($zp);

我使用以下代码对自己的数据进行编码:

echo gzencode($data, 9);

有了这个,我添加了以下标题:

header("Content-Type: application/x-gzip");
header("Content-Encoding: gzip");
header("Accepts-Encoding: gzip");

当我浏览到 URL 时,我的浏览器想要自动下载文件,我可以在我的 Mac 上解压缩并查看它的内容。但是,当我尝试通过 xCode 阅读它时,它不起作用。

NSData *data = [NSData dataWithContentsOfURL:URL];
NSString *content = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog (content); //returns only data when pointed directly to a Gzip file

我是不是忘记了什么?

4

1 回答 1

25

如果您下载内容类型为 application/x-gzip 的内容,则 url 加载系统不会为您解压缩。我认为data您收到的仍然是 gzip 编码的。

您可以使用我的 NSData 添加来处理这个问题。见http://github.com/st3fan/cocoa-utils/blob/master/src/NSDataGZipAdditions.m

于 2010-01-29T03:43:43.627 回答