2010-04-21 12 views
34

क्या कोई जानता है कि NSRLConnection/NSURLRequest को gzip अनुरोधों के लिए समर्थन है या नहीं।NSURLConnection/NSURLRequest gzip समर्थन

यदि आप करते हैं, तो क्या आप अधिक जानकारी प्रदान कर सकते हैं?

+0

की संभावित डुप्लिकेट [Accept-Encoding: iOS पर gzip] (http://stackoverflow.com/questions/25333857/accept-encoding-gzip-on-ios) –

+0

@JoshCaswell, तारीख अंतर की जाँच करें । इस प्रश्न को पोस्ट करने के 5 साल बाद पूछा गया था। – mxg

+0

[डुप्लिकेट को हमेशा बाद की तारीख की दिशा में इंगित नहीं करना चाहिए] (http://meta.stackexchange.com/a/147651/159251)। मेरा मानना ​​है कि दूसरे प्रश्न पर उत्तर यहां पाए गए लोगों की तुलना में थोड़ा अधिक उपयोगी है। –

उत्तर

63

हालांकि यह does not seem to be documented, करता there is evidence कि NSURLConnection पारदर्शी gzip समर्थन है। जिसका अर्थ है कि यदि सर्वर gzip एन्कोडिंग का समर्थन करता है, और आपके अनुरोध में Accept-Encoding हैडर gzip * है, तो सर्वर एक gzipped प्रतिक्रिया भेज देगा, जो NSURLConnection स्वचालित रूप से डीकोड हो जाएगा।

* NSURLRequest डिफ़ॉल्ट रूप से उस शीर्षलेख को जोड़ सकता है। यदि नहीं, तो तुम इतनी तरह मैन्युअल रूप से इसे जोड़ने के लिए:

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

1. मुझे लगता है कि आपको हेडर 2 जोड़ने के लिए एनएसएमयूटेबलURLआरक्वेट की आवश्यकता है। बेस एसडीके के रूप में "आईओएस 3.2" के रूप में, डिफ्लेट और जीजीआईपी युक्त स्वीकृति-एन्कोडिंग हेडर स्वचालित रूप से शामिल होता है (स्पष्ट रूप से ऐसा नहीं होता था)। – hop

+6

मैंने अभी भी परीक्षण किए हैं और देखा है कि आईफोन डिफ़ॉल्ट रूप से gzip और डिफ्लेट जोड़ता है। क्या किसी को पता है कि यह हमेशा समर्थित था या किस संस्करण से ऐप्पल ने डिफ़ॉल्ट रूप से स्वीकृति-एन्कोडिंग सहित शुरुआत की है? – Dmitry

+3

सर्वर पर भेजे गए gzip एन्कोडिंग अनुरोधों के बारे में क्या? http://stackoverflow.com/questions/6204066/how-to-gzip-an-nsurlconnection-request – ma11hew28

2

NSURLRequestNSData को gzip डीकोड; जैसे कि सर्वर प्रतिक्रिया में "Content-Encoding" = gzip होता है; NSData डीकोड करेगा। यदि आप इसे स्वचालित रूप से डीकोड करना चाहते हैं, तो अगला करें। निजी एपीआई का उपयोग ऐप स्टोर पर लागू नहीं हो सकता है।

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

मैंने bugreport.apple.com पर एक अनुरोध दायर किया है कि यह या समकक्ष एपीआई सार्वजनिक हो। http://openradar.appspot.com/radar?id=4931101243998208 – John

संबंधित मुद्दे