ASIHTTPRequest を使用して .zip でダウンロードしたファイルを解凍できるのか、それとも .gzip 圧縮ファイルのみを解凍できるのかを知りたいです。
ASIHTTPRequest が .zip 圧縮ファイルを解凍できない場合は、ZipArchive などのサードパーティ API を使用してダウンロードしたファイルを解凍する必要があるため、お知らせください。
ありがとう
ASIHTTPRequest を使用して .zip でダウンロードしたファイルを解凍できるのか、それとも .gzip 圧縮ファイルのみを解凍できるのかを知りたいです。
ASIHTTPRequest が .zip 圧縮ファイルを解凍できない場合は、ZipArchive などのサードパーティ API を使用してダウンロードしたファイルを解凍する必要があるため、お知らせください。
ありがとう
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];