【问题标题】:When will NSURLConnection decompress a compressed resource?NSURLConnection 什么时候解压一个压缩资源?
【发布时间】:2013-04-17 18:02:36
【问题描述】:

我已经阅读了NSURLConnection 将如何自动解压缩压缩(压缩)资源,但是我在任何地方都找不到 Apple 文档或官方词来指定定义此解压缩发生时间的逻辑。我也很想知道这与流数据有何关系。

问题

我相信,我有一台服务器,它使用分块编码将文件流式传输到我的应用程序。这是 WCF 服务。顺便说一句,我们使用流媒体是因为它可以在高使用率期间减轻服务器负载,并且因为我们的文件将非常大(100 MB)。这些文件可以被压缩或未压缩。我认为在我的情况下,因为我们正在流式传输数据,Content-Encoding 标头不可用,Content-Length 也不可用。我的回复中只看到"Transfer-Encoding" = Identity

我正在使用AFNetworking 库通过AFHTTPRequestOperationinputStreamoutputStream 将这些文件写入磁盘。我也尝试过使用AFDownloadRequestOperation 并得到类似的结果。

现在,AFNetworking 文档声明压缩文件将在下载后自动解压缩(我相信是通过 NSURLConnection),但这种情况不会发生。我将它们写入我的文档目录,没有任何问题。然而,它们仍然是拉链的。我也可以手动解压缩它们。所以文件没有损坏。它们不会自动解压缩,因为我正在流式传输数据并且因为未指定 Content-Encoding

我想知道的:

  1. 为什么我的压缩文件没有自动解压?是因为流媒体吗?我知道之后我可以使用另一个库来解压缩,但如果可能的话,我想避免这种情况。
  2. NSURLConnection 究竟何时知道何时自动解压缩下载的文件?我在任何地方的文档中都找不到这个。这是否与标头值相关联?

任何帮助将不胜感激。

【问题讨论】:

    标签: compression streaming zip gzip afnetworking


    【解决方案1】:

    当相应的Content-Encoding(例如gzip)在响应头中可用时,NSURLConnection 将自动解压缩。这取决于您的服务器来安排。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-19
      • 1970-01-01
      • 2013-10-26
      • 1970-01-01
      • 2012-07-29
      • 1970-01-01
      • 2020-01-30
      相关资源
      最近更新 更多