【问题标题】:iOS gzip Compression to PHPiOS gzip 压缩到 PHP
【发布时间】:2012-07-04 20:26:40
【问题描述】:

我正在通过 PHP 接收的 POST 向我的网页发送大量文本。它大约是 500kb - 1.5 mb。问题在于它是非常重复的数据,我想压缩它。数据看起来像这样,“123,123,123,124,124,124,125,126...等”

我找到了 Geoggrey Garside http://cocoadev.com/wiki/NSDataCategory 的 NSData+Compression 库,其中包含 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

任何帮助将不胜感激!

【问题讨论】:

    标签: php ios post gzip asiformdatarequest


    【解决方案1】:

    尝试gzdecode 而不是 gzinflate

    [编辑]
    看起来 gzdecode 只能从 php5.4 获得(这是我使用 gzdecode 的版本)

    从我得到下面的 cmets,我在 php5.3 上测试它并且它工作了

    <?php 
    function gzdecode($data) 
    { 
        return gzinflate(substr($data,10,-8)); 
    } 
    ?> 
    

    【讨论】:

    • 在当前 php 版本中可能尚不可用。 cmets 中的替代实现,或通过 upgradephp。
    • 我必须在 iOS 中使用 base64 编码对字符串进行编码,然后发送该字符串,然后在 php 中对其进行 base64_decode,然后应用您的 gzdecode 函数,但谢谢!
    猜你喜欢
    • 2014-01-06
    • 2011-10-11
    • 1970-01-01
    • 2015-07-14
    • 1970-01-01
    • 2010-11-14
    • 2012-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多