3

PHP が受信した POST で Web ページに大量のテキストを送信しています。約 500kb ~ 1.5mb です。これに関する問題は、それが非常に反復的なデータであり、圧縮したいということです。データは、「123,123,123,124,124,124,125,126... など」のようになります。

メソッド gzipInflate および gzipDeflate を含むGeoggrey Garside http://cocoadev.com/wiki/NSDataCategoryによる NSData+Compression ライブラリを見つけ、 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

どんな助けでも大歓迎です!

4

1 に答える 1

3

gzinflateではなく gzdecode を試す

[編集]
gzdecode は php5.4 からしか利用できないようです (それは私が gzdecode で持っているバージョンです)

以下のコメントから、php5.3でテストしたところ、動作しました

<?php 
function gzdecode($data) 
{ 
    return gzinflate(substr($data,10,-8)); 
} 
?> 
于 2012-07-04T20:34:48.453 に答える