Ich habe einen Web-Service unter Windows Azure, die JSON, die ich in meiner iPhone-App konsumieren.Komprimieren/Dekomprimieren NSString in Ziel-c (iPhone) mit GZIP oder deflate
Leider scheint Windows Azure die Komprimierung dynamischer Antworten noch nicht zu unterstützen (lange Geschichte), also entschied ich mich, es durch die Rückgabe eines unkomprimierten JSON-Pakets zu umgehen, das eine komprimierte (mit GZIP) Zeichenfolge enthält.
z.B
{"Error":null,"IsCompressed":true,"Success":true,"Value":"vWsAAB+LCAAAAAAAB..etc.."}
... wo die komprimierten String-Wert eines komplexen Objekts in JSON dargestellt ist.
Das war wirklich einfach auf dem Server zu implementieren, aber für das Leben von mir kann ich nicht herausfinden, wie man einen gezippten NSString in einen unkomprimierten NSString dekomprimiert, alle Beispiele, die ich für zlib usw. finden kann, befassen sich mit Dateien etc.
Kann mir jemand Hinweise geben, wie man das macht? (Ich würde mich auch über eine Lösung freuen, die deflate verwendet, da ich die serverseitige Implementierung ändern könnte, um Deflate auch zu verwenden).
Danke !!
Steven
Edit 1: Aaah, ich sehe, dass ASIHTTPRequest darin die folgende Funktion verwendet Quellcode:
//uncompress gzipped data with zlib
+ (NSData *)uncompressZippedData:(NSData*)compressedData;
... und ich bin mir bewusst, dass ich NSString konvertieren zu NSData, also werde ich sehen, ob das mich irgendwohin führt!
Edit 2: Leider führte mich die in Edit 1 beschriebene Methode nirgendwohin.
Edit 3: Befolgen Sie die folgenden Hinweise zur base64-Kodierung/Dekodierung, ich kam mit dem folgenden Code. Der codedGzippedString ist, wie Sie erraten können, eine Zeichenfolge "Hallo, mein Name ist Steven Elliott", die gezippt und dann in eine Base64-Zeichenfolge konvertiert wird. Leider ist das Ergebnis, das mit NSLog druckt, einfach leer.
NSString *encodedGzippedString = @"GgAAAB+LCAAAAAAABADtvQdgHEmWJSYvbcp7f0r1StfgdKEIgGATJNiQQBDswYjN5pLsHWlHIymrKoHKZVZlXWYWQMztnbz33nvvvffee++997o7nU4n99//P1xmZAFs9s5K2smeIYCqyB8/fnwfPyK+uE6X2SJPiyZ93eaX+TI9Lcuiatvx/wOwYc0HGgAAAA==";
NSData *decodedGzippedData = [NSData dataFromBase64String:encodedGzippedString];
NSData* unGzippedJsonData = [ASIHTTPRequest uncompressZippedData:decodedGzippedData];
NSString* unGzippedJsonString = [[NSString alloc] initWithData:unGzippedJsonData encoding:NSASCIIStringEncoding];
NSLog(@"Result: %@", unGzippedJsonString);
Hallo, können Sie eine genaue Verbindung zum Framework bereitstellen? –
http://www.chilkatsoft.com/downloads_ios.asp – dirkoneill
Wie verwendet man chilkat framework? –