Подтвердить что ты не робот

Поддержка NSURLConnection/NSURLRequest gzip

Кто-нибудь знает, поддерживает ли NSURLConnection/NSURLRequest запросы gzip.

Если да, можете ли вы предоставить дополнительную информацию?

4b9b3361

Ответ 1

хотя он похоже, не документирован, есть доказательства, что NSURLConnection имеет прозрачную поддержку gzip. что если сервер поддерживает кодировку gzip, а ваш запрос имеет заголовок Accept-Encoding, содержащий gzip *, сервер отправит gzipped-ответ, который NSURLConnection будет автоматически декодироваться.

* NSURLRequest может добавить этот заголовок по умолчанию. если нет, вы должны добавить его вручную так:

 [urlReq setValue:@"gzip" forHTTPHeaderField:@"Accept-Encoding"]

Ответ 2

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);