gpt4 book ai didi

iphone - 使用 GZIP 或 deflate 在 objective-c (iphone) 中压缩/解压缩 NSString

转载 作者:太空狗 更新时间:2023-10-30 03:33:16 26 4
gpt4 key购买 nike

我有一个在 Windows Azure 上运行的网络服务,它返回我在我的 iPhone 应用程序中使用的 JSON。

不幸的是,Windows Azure 似乎还不支持动态响应的压缩(长话短说)所以我决定通过返回一个未压缩的 JSON 包来绕过它,其中包含一个压缩(使用 GZIP)字符串。

例如

{"Error":null,"IsCompressed":true,"Success":true,"Value":"vWsAAB+LCAAAAAAAB..etc.."}

... 其中值是以 JSON 表示的复杂对象的压缩字符串。

这在服务器上实现起来真的很容易,但是对于我来说,我无法弄清楚如何将 gzipped NSString 解压缩为未压缩的 NSString,我能找到的所有 zlib 等示例都是处理文件等.

任何人都可以给我任何关于如何做到这一点的线索吗? (我也很高兴有一个使用 deflate 的解决方案,因为我可以更改服务器端实现以也使用 deflate)。

谢谢!!

史蒂文

编辑 1: 啊啊,我看到 ASIHTTPRequest 在其源代码中使用了以下函数:

//uncompress gzipped data with zlib
+ (NSData *)uncompressZippedData:(NSData*)compressedData;

...而且我知道我可以将 NSString 转换为 NSData,所以我会看看这是否能引导我到任何地方!

编辑 2: 不幸的是,编辑 1 中描述的方法并没有引导我到任何地方。

编辑 3: 根据下面关于 base64 编码/解码的建议,我想出了以下代码。 encodedGzippedString 正如您猜到的那样,是一个字符串“你好,我的名字是 Steven Elliott”,它被 gzip 压缩,然后转换为 base64 字符串。不幸的是,使用 NSLog 打印的结果只是空白。

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

最佳答案

折腾了这么久,我终于找到了解决这个问题的方法!

上面的答案都没有帮助我,尽管它们看起来都很有希望。最后,我能够使用 .net 的 chilkat 框架使用 gzip 在服务器上压缩字符串 ... 然后使用 iOS 的 chilkat 框架在 iphone 上解压缩它(尚未发布,但如果您通过电子邮件发送家伙直接)。

chilkat 框架让这件事变得 super 容易,给开发者点赞!

关于iphone - 使用 GZIP 或 deflate 在 objective-c (iphone) 中压缩/解压缩 NSString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3015904/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com