ファイルのダウンロードやエラーの管理に問題がある場合があります(JSON)
ダウンロードは非常にうまく機能します。問題は、ユーザーがダウンロードを要求したときに、サーバーが404または200(JSONを使用)を送信できる場合があることです。
この場合のJSONの処理方法は?リクエストを送信すると、JSONエラー(ステータスが200または404)を受信するのか、zipファイルを受信するのかわかりません...
responseObjectがどのように役立つかわかりません。
これが私のコードです:
AFHTTPRequestOperation *operation = [[[AFHTTPRequestOperation alloc] initWithRequest:request] autorelease];
operation.outputStream = [NSOutputStream outputStreamToFileAtPath:zipPath append:NO];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject)
{
NSLog(@"Successfully downloaded zip file to %@", zipPath);
// is-it impossible to handle a JSON response here ?
// responseObject can help me ? don't think !
// do what I have to do after the download is complete
}
failure:^(AFHTTPRequestOperation *operation, NSError *error)
{
// 404
// is-it impossible to handle a JSON response here ?
if ([error code] == -1011)
{
}
}];
[operation setDownloadProgressBlock:^(NSInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
float progress = ((float)((int)totalBytesWritten) / (float)((int)totalBytesExpectedToWrite));
self.progressView.progress = progress;
}];
[operation start];
AFJSOnRequestOperationを作成する必要がありますか?しかし、この場合、JSONではないダウンロードされたファイルを受け取る方法は?助けてくれてありがとう。
編集:コメントに書いたように、次の行にコメントした場合にのみ、成功ブロックでresponseDataを取得してキャッチできます。
operation.outputStream = [NSOutputStream outputStreamToFileAtPath:zipPath append:NO];
それは論理的です、私は応答が成功ブロックの代わりにoutputStreamに入ると思います。そのための解決策はありますか?