iPhone и GZip

Теперь я знаю, что 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

Я забываю что-то?

6
задан gerry3 29 January 2010 в 02:59
поделиться

1 ответ

Если вы загружаете что-то с приложением типа контента/x-gzip, система загрузки url не распаковывает его за вас. Я думаю, что полученные вами данные все еще закодированы gzip.

Вы можете использовать мои дополнения к NSD-данным, чтобы справиться с этим. See http://github.com/st3fan/cocoa-utils/blob/master/src/NSDataGZipAdditions.m

25
ответ дан 8 December 2019 в 04:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: