2010-01-29 1 views
6

는 지금은 엑스 코드가를 automaticly에서 당신을 위해 Gzip으로의 decrompession을한다는 것을 알고아이폰과 Gzip으로

NSData *data = [NSData dataWithContentsOfURL:URL]; 

그리고 내 서버에 GZIP 파일을 가리 경우 작동 않습니다.

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

내가 내 자신의 데이터를 인코딩 : :이

echo gzencode($data, 9); 

나는 다음과 같은 헤더를 추가 내 콘텐츠는 동적이기 때문에, 나는 오히려 다음과 같이 gzip으로 파일을 생성하는 PHP 스크립트를 :

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

예. 당신은 당신의 대답을 받아들이는 것을 잊고 있습니다! (미안하지만 저항 할 수 없습니다!) –

+0

NSLog를 잘못 사용하고 있습니다. 형식 문자열을 사용하십시오 :'NSLog (@ "% @", content); ' – gerry3

+0

관심 없으니, 왜 이것을하고 싶습니까? mod_deflate를 사용하는 것이 훨씬 간단하고 수동 조작이 필요하지 않을까요? – djskinner

답변

25

콘텐츠 유형 application/x-gzip을 사용하여 무언가를 다운로드하는 경우 URL 로딩 시스템에서 압축을 해제하지 않습니다. 받은 data은 여전히 ​​gzip으로 인코딩 된 것 같습니다.

내 NSData 추가 기능을 사용하여이 문제를 해결할 수 있습니다. http://github.com/st3fan/cocoa-utils/blob/master/src/NSDataGZipAdditions.m

+0

믿을 수 없을만큼 도움이되었다고 upvoted - 카테고리 주셔서 감사합니다! –