Qualcuno sa se NSURLConnection/NSURLRequest hanno il supporto per le richieste gzip.NSURLConnection/NSURLRequest supporto gzip
In caso affermativo, puoi fornire ulteriori informazioni?
Qualcuno sa se NSURLConnection/NSURLRequest hanno il supporto per le richieste gzip.NSURLConnection/NSURLRequest supporto gzip
In caso affermativo, puoi fornire ulteriori informazioni?
sebbene does not seem to be documented, there is evidence che NSURLConnection
fa hanno il supporto gzip trasparente. il che significa che se il server supporta la codifica gzip e la tua richiesta ha un'intestazione Accept-Encoding
contenente gzip
*, il server invierà una risposta gzip, che verrà decodificata automaticamente da NSURLConnection
.
* NSURLRequest
potrebbe aggiungere quell'intestazione per impostazione predefinita. in caso contrario, si deve aggiungere manualmente in questo modo:
[urlReq setValue:@"gzip" forHTTPHeaderField:@"Accept-Encoding"]
1. Penso che sia necessario un NSMutableURLRequest per aggiungere un'intestazione 2. come "iOS 3.2" come sdk di base, l'intestazione accept-encoding che contiene deflate e gzip sembra essere inclusa automaticamente (apparentemente non era abituata a essere). – hop
Ho appena eseguito anche i test e ho visto che iPhone aggiunge gzip e deflate di default. Qualcuno sa se è sempre stato supportato o da quale versione Apple ha iniziato ad includere Accept-Encoding di default? – Dmitry
E le richieste di codifica gzip inviate al server? http://stackoverflow.com/questions/6204066/how-to-gzip-an-nsurlconnection-request – ma11hew28
NSURLRequest
decodifica gzip per NSData
; come la risposta del server contiene "Content-Encoding" = gzip
; il NSData
verrà decodificato. Se vuoi decodificarlo automaticamente, fai dopo. L'utilizzo dell'API privata non può essere applicato all'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);
Ho inoltrato una richiesta a bugreport.apple.com che questa o una API equivalente sia resa pubblica. http://openradar.appspot.com/radar?id=4931101243998208 – John
Possibile duplicato del [Accept-Encoding: gzip su iOS] (http://stackoverflow.com/questions/25333857/accept-encoding-gzip-on-ios) –
@JoshCaswell, si prega di controllare la differenza di data . È stato chiesto 5 anni dopo che questa domanda è stata pubblicata. – mxg
[I duplicati non devono sempre puntare nella direzione della data successiva] (http://meta.stackexchange.com/a/147651/159251). Credo che la risposta all'altra domanda sia un po 'più utile di quelle trovate qui. –