2013-04-17 1 views
2

NSURLConnection은 압축 (압축) 된 리소스를 자동으로 압축 해제하는 방법을 읽었지 만,이 압축 풀기가 발생할 때 정의하는 논리를 지정하는 Apple 설명서 또는 공식 단어를 어디에서도 찾을 수 없습니다. 또한 이것이 스트리밍 된 데이터와 어떤 관련이 있는지 궁금합니다.NSURLConnection은 언제 압축 된 리소스의 압축을 해제합니까?

문제점

내가 생각하는 청크 분할 인코딩을 사용하여 내 응용 프로그램에 파일을 스트리밍하는 서버가 있습니다. 이것은 WCF 서비스입니다. 덧붙여서, 우리는 스트리밍을 할 것입니다. 왜냐하면 사용량이 많을 때 서버 부하를 줄여야하고 우리 파일이 매우 커질 것이기 때문입니다 (MB의 100 초). 파일은 압축되거나 압축되지 않을 수 있습니다. 제 생각에는 데이터를 스트리밍 중이므로 Content-Encoding 헤더를 사용할 수 없으며 Content-Length입니다. 나는 내 대답에만 "Transfer-Encoding" = Identity을 볼 수 있습니다.

AFHTTPRequestOperationinputStreamoutputStream으로이 파일을 디스크에 쓰려면 AFNetworking 라이브러리를 사용하고 있습니다. 나는 또한 비슷한 결과를 가지고 AFDownloadRequestOperation을 사용해 보았습니다.

이제 AFNetworking 문서에 따르면 다운로드 후 압축 파일이 자동으로 압축 해제됩니다 (NSURLConnection을 통해)라고 생각합니다. 문제없이 내 문서 디렉토리에 저장합니다. 아직 그들은 여전히 ​​압축되어 있습니다. 수동으로 압축을 풀 수도 있습니다. 따라서 파일이 손상되지 않습니다. Content-Encoding이 지정되지 않았기 때문에 데이터를 스트리밍하기 때문에 자동 압축 해제되지 않습니까?

내가 알고 싶습니다 무엇 :

  1. 왜 내 압축 된 파일은 자동 압축 해제되지 않습니다? 스트리밍 때문인가요? 나중에 다른 라이브러리를 사용하여 압축을 풀 수 있다는 것을 알고 있지만 가능한 경우이를 피하고 싶습니다.
  2. NSURLConnection 정확히 언제 다운로드 한 파일의 압축을 풀 것인지 자동으로 알 수 있습니까? 어디서나 문서에서이를 찾을 수 없습니다. 이것은 헤더 값에 묶여 있습니까?

모든 도움을 주시면 감사하겠습니다.

답변

0

NSURLConnection은 응답 헤더에서 Content-Encoding (예 : gzip)을 사용할 수있는 경우 자동으로 압축을 해제합니다. 그것은 귀하의 서버가 준비하는 것입니다.

관련 문제