37 votes

NSURLConnection / NSURLRequest supporte gzip!

Est-ce que quelqu'un sait si NSURLConnection / NSURLRequest prend en charge les requêtes gzip.

Si oui, pouvez-vous fournir plus d'informations?

Merci d'avance!

67voto

ax. Points 22269

bien qu'il ne semble pas être documenté, il y a des preuves qu' NSURLConnection n' ont transparente gzip soutien. ce qui signifie que si le serveur prend en charge l'encodage gzip, et votre demande a un Accept-Encoding d'en-tête contenant gzip*, le serveur envoie un format de réponse, qui NSURLConnection seront automatiquement le décodage.

* NSURLRequest peut ajouter que les en-tête par défaut. si non, vous devez l'ajouter manuellement comme ceci:

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

3voto

liuyuning Points 1

Parfois, NSURLRequest décode toujours gzip en NSData; par exemple, la réponse du serveur contient "Content-Encoding" = gzip; le NSData va décoder. si vous voulez fermer automatiquement le décoder, faites ensuite. Utiliser une API privée ne peut pas s'appliquer à App Store !!!

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X