如何使用gzip解压缩与AFNetworking API调用


how to use gzip decompression with AFNetworking API call?

我在项目中使用AFNetworking库。最近我听说了由defalut在NSURLConnection类中提供的gzip数据压缩,它减少了大型json响应的时间和加载时间,因此AFNetworking可能具有该功能,因为它在NSURLConnect之上工作。

但我不知道如何通过AFNetworking从php API获得gzip压缩的json响应。

当Json响应文件大小超过100kb+时,我需要这种技术。

如果服务器支持gzip,则可以要求客户端请求服务器启用gzip进行响应。若要要求服务器使用gzip,请在请求中添加特定的"Accept-Encoding"标头。例如,您可以使用以下代码行来完成此操作:

// Get one that serializes your requests, 
// for example from your AFHTTPSessionManager subclass
AFHTTPRequestSerializer <AFURLRequestSerialization> *requestSerializer = ...
[requestSerializer setValue:@"gzip, identity" forHTTPHeaderField:@"Accept-Encoding"];

"Accept-Encoding"标头必须包含gzip,而可能不需要identity

如果您在AFNetworking中使用基于NSURLSession的API,它将自动包含在其中,如下所述。因此,您不需要做任何事情。

请注意,您可能在应用程序日志中看不到请求的标头值,但如果服务器支持gzip,您可以检查标头以确认此行为。