我想知道是否使用ASIHTTPRequest我们可以解压缩.zip下载的文件,或者它只能 解压缩.gzip压缩文件。
请告诉我,因为如果ASIHTTPRequest无法解压缩.zip压缩文件,那么我将不得不使用ZipArchive这样的第三方API来解压缩下载的文件。
由于
答案 0 :(得分:0)
为什么不使用gzip压缩的HTTP通信,它将由ASI(以及几乎所有其他HTTP访问框架)为您透明地解码。
ASIHTTP支持解压缩,例如 -
- (IBAction)grabURL:(id)sender
{
NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
// YES is the default, you can turn off gzip compression by setting this to NO
[request setAllowCompressedResponse:YES];
[request startSynchronous];
BOOL *dataWasCompressed = [request isResponseCompressed]; // Was the response gzip compressed?
NSData *compressedResponse = [request rawResponseData]; // Compressed data
NSData *uncompressedData = [request responseData]; // Uncompressed data
NSString *response = [request responseString]; // Uncompressed data as a string
}
更新:如果asi不支持zip文件解压缩,那么我过去曾使用ZipArchive成功。
它非常轻巧,使用简单,支持密码保护,ZIP内的多个文件,以及压缩和放大解压缩。所以你需要首先通过asi获取zip文件然后解压缩使用ziparchive。
基本用法是:
NSString *filepath = [[NSBundle mainBundle] pathForResource:@"ZipFileName" ofType:@"zip"];
ZipArchive *zipArchive = [[ZipArchive alloc] init];
[zipArchive UnzipOpenFile:filepath Password:@"xxxxxx"];
[zipArchive UnzipFileTo:{pathToDirectory} overWrite:YES];
[zipArchive UnzipCloseFile];
[zipArchive release];