0

我想知道使用 ASIHTTPRequest 是否可以解压缩 .zip 下载的文件,或者它只能解压缩 .gzip 压缩文件。

请让我知道,因为如果 ASIHTTPRequest 无法解压缩 .zip 压缩文件,那么我将不得不使用 ZipArchive 等第三方 api 来解压缩下载的文件。

谢谢

4

1 回答 1

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 文件,然后 unzip 使用的是 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];
于 2012-07-12T06:58:53.623 回答