2011-06-28 5 views
0

クライアント/サーバーの動作を改善するために、私のiPhoneクライアントコードを調整して、Zipedレスポンスを進めていきたいと考えています。xcodeを使用したSOAPメッセージの解凍

サーバーはSOAP応答zipedを適合させます。

私はレスポンスを解凍する方法を検討していましたが、私のためにはうまくいきませんでした。

私が研究した最初の解決策は、ZipArchiveで、解決策(minizipから)hereで説明されていましたが、ファイルシステムの圧縮に焦点を当てています。

NSStringを解凍するだけです。その後

私はこのsecond approach確認:

NSData *decodedGzippedData = [NSData dataFromBase64String:encodedGzippedString]; 
NSData* unGzippedJsonData = [ASIHTTPRequest uncompressZippedData:decodedGzippedData]; 
NSString* unGzippedJsonString = [[NSString alloc] initWithData:unGzippedJsonData encoding:NSASCIIStringEncoding];  

をしかしなぜならたNSData dataFromBase64Stringが存在していなかった実際のバージョンでは、私のために動作しませんでした。

私は前の質問の3番目の回答を扱っています。誰でも、Base64.hとNSData + Compression.hをインポートするためにインストールする必要があるライブラリやフレームワークを知っていますか?この他のポテンシャルで使用されましたsolution

+0

私はchilkat librをテストしていました同じ結果を持つary :(((http://www.example-code.com/ios/zip.asp。 解決策はファイルシステム:SSSにのみ適用されます –

答えて

0

解決策は次のものでした。

プロジェクトに次のライブラリをインストールします。

  • Base64.h //あなたはそれhere
  • たNSData + Compression.hを見つけることができます//あなたはhere

使用それを見つけることができますprevious solutions

#import "Base64.h" 
#import "NSData+compression.h" 

... 

// decoding the base64 ziped message 
Byte inputData[[stringValue lengthOfBytesUsingEncoding:NSUTF8StringEncoding]]; 
[[stringValue dataUsingEncoding:NSUTF8StringEncoding] getBytes:inputData]; 
size_t inputDataSize = (size_t)[stringValue length]; 
size_t outputDataSize = EstimateBas64DecodedDataSize(inputDataSize); 
Byte outputData[outputDataSize];//prepare a Byte[] for the decoded data 
Base64DecodeData(inputData, inputDataSize, outputData, &outputDataSize); 

// inflate the original string using gzip 
NSData *theData = [[NSData alloc] initWithBytes:outputData length:outputDataSize]; 
NSData* result = [theData gzipInflate];//make bigger==gunzip 

// Return the result 
return [[NSString alloc] initWithData:result encoding:NSUTF8StringEncoding]; 
関連する問題