我通过 PHP 收到的 POST 向我的网页发送了大量文本。它大约是 500kb - 1.5 mb。这样做的问题是,这是非常重复的数据,我想压缩它。数据如下所示,"123,123,123,124,124,124,125,126...等等"
我找到了Geoggrey Garside http://cocoadev.com/wiki/NSDataCategory 的NSData + Compression Library,其中包含方法gzipInflate和gzipDeflate,并且已经获得了gzipInflate方法,可以从服务器正确解压缩数据,但是我一生都无法弄清楚如何在iOS中压缩字符串并将其发送到服务器以通过PHP解压缩。
这是我的iOS代码:
NSData* uncompressedStringData = [@"test" dataUsingEncoding:NSUTF8StringEncoding];
NSData* compressedData = [uncompressedStringData gzipDeflate];
ASIFormDataRequest * request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:@"myserver"]];
[request setPostValue:@compressedData forKey:@"1"];
...more code to deal with sending the request.. etc...
这是我的PHP代码:
echo gzinflate($_POST['1']);
我从服务器得到的只是
Warning: gzinflate() data error
任何帮助将不胜感激!
尝试 gzdecode 而不是 gzinfexpand
[编辑]
看起来 gzdecode 只能从 php5.4 获得(这是我使用 gzdecode 的版本)
从下面的评论中,我在 php5.3 上对其进行了测试,它有效
<?php
function gzdecode($data)
{
return gzinflate(substr($data,10,-8));
}
?>