0

ASIHTTPRequest を使用して .zip でダウンロードしたファイルを解凍できるのか、それとも .gzip 圧縮ファイルのみを解凍できるのかを知りたいです。

ASIHTTPRequest が .zip 圧縮ファイルを解凍できない場合は、ZipArchive などのサードパーティ API を使用してダウンロードしたファイルを解凍する必要があるため、お知らせください。

ありがとう

4

1 に答える 1

0

ASI(および事実上他のすべてのHTTPアクセスフレームワーク)によって透過的にデコードされるgzip圧縮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 に答える