Кто-нибудь знает, поддерживает ли NSURLConnection/NSURLRequest запросы gzip.
Если да, можете ли вы предоставить дополнительную информацию?
Кто-нибудь знает, поддерживает ли NSURLConnection/NSURLRequest запросы gzip.
Если да, можете ли вы предоставить дополнительную информацию?
хотя это похоже не задокументировано, есть доказательства того, что NSURLConnection
имеет прозрачную поддержку gzip. Это означает, что если сервер поддерживает кодировку gzip, а ваш запрос имеет заголовок Accept-Encoding
, содержащий gzip
*, сервер отправит ответ в формате gzip, который NSURLConnection
будет автоматически декодирован.
* NSURLRequest
может добавить этот заголовок по умолчанию. если нет, вы должны добавить его вручную следующим образом:
[urlReq setValue:@"gzip" forHTTPHeaderField:@"Accept-Encoding"]
NSURLRequest
декодирует gzip в NSData
; например, ответ сервера содержит "Content-Encoding" = gzip
; NSData
будет декодировать. Если вы не хотите автоматически декодировать его, добавьте код ниже. Это частный API.
//import CFNetwork.framework
extern CFStringRef kCFURLRequestDoNotDecodeData;
typedef const struct _CFURLRequest* CFURLRequestRef;
extern void _CFURLRequestSetProtocolProperty(CFURLRequestRef,CFStringRef,CFTypeRef);
//NSURLRequest init ...
//...
CFURLRequestRef requestRef = (CFURLRequestRef)[request performSelector:@selector(_CFURLRequest)];
_CFURLRequestSetProtocolProperty(requestRef,kCFURLRequestDoNotDecodeData,kCFBooleanTrue);
Accept-Encoding: gzip, deflate
автоматически добавляется в заголовок запроса [NSURLSession]. - person abhimuralidharan   schedule 16.09.2019