我在项目中使用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,您可以检查标头以确认此行为。