我想解壓一些zlib編碼數據,我使用ASIHTTPRequest包裝器下載。解壓縮zlib編碼nsdata
這是我迄今爲止..攔着的數據,現在我希望一些幫助,開始解壓過程。
- (IBAction)sendHttpsRequest
{
//Set request address
NSMutableString *databaseURL = [[NSMutableString alloc] initWithString:@"https://192.168.17.36:443"];
//call ASIHTTP delegates (Used to connect to database)
NSURL *url = [NSURL URLWithString:databaseURL];
//This sets up all other request
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setDelegate:self];
[request setValidatesSecureCertificate:NO];
[request setPostValue:@"ClientDataSet.xml" forKey:@"filename"];
[request startSynchronous];
}
- (void)requestFinished:(ASIHTTPRequest *)request
{
responseData = [request responseData]; //Pass requested data from server over to NSData variable..
//Is this where I have to think about decompression? or do I pass this data out to another method?
}
- (void)requestFailed:(ASIHTTPRequest *)request
{
self.hudCheck = NO;
[NSTimer scheduledTimerWithTimeInterval:0.25 target:self selector:@selector(stopAnimating) userInfo:nil repeats:NO];
NSError *error = [request error];
NSLog(@"%@", error);
}
所以相當多,我到減壓階段但是我不知道哪個函數/方法等,我需要使用解壓縮這些數據。我只用過gzip嘗試過,因爲ASI包裝器本身就處理所有事情。
但是由於我的控制現在我得到的數據是zlib的編碼的外部環境。所以任何功能,方法或例子,你能告訴我,這將有助於我的事業將不勝感激。
編輯:
從我加入 @Caleb響應前進「zlib.h」我的文件,現在有機會獲得這個構架的方法。其中之一是inflate()方法..但是我不確定需要輸入什麼參數?有任何想法嗎?。
是的,我看到了,但我認爲我正在看一個C++的例子,不知道如何得到這個與我正在做的工作。只需要添加#include「zlib.h」,然後我可以在我的NSData對象上調用inFlate? –
很酷,我只是想弄清楚什麼樣的參數應該被用於膨脹(__,__) –
這個例子是在普通的老C中。它有很多註釋,所以通讀它幾次,並確保你明白它首先。示例中的'inf()'函數讀寫文件;你可能會想調整它來讀取你的NSData並寫入你提供的NSMutableData。用調用NS [Mutable] Data來替換'fread()'和'fwrite()'並不難,但是你可能想要使用NSInputStream和NSOutputStream來使事情變得更容易。從概念上講,NS [輸入|輸出]流的工作方式與FILE *很相似 - 只是按順序讀取或寫入的緩衝區。 – Caleb