3

POST データを含むリクエストを Web サーバーに送信しています。Web サーバーは、エラーの場合は JSON 応答を返し、エラーがない場合はファイル データ自体を返します。

ファイルデータ応答の進行状況を追跡したいと考えています。私のコードは、ASIHttpRequestチュートリアルのサンプル コードに基づいています。

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];

[request setPostValue:someValue forKey:@"someKey"];
[request setPostValue:someOtherValue forKey:@"someOtherKey"];
[request setShowAccurateProgress:YES];
[request setDownloadProgressDelegate:aProgressView];

request.delegate = self;
[request startSynchronous];

完全な応答が得られるまで何も起こりません。この場合、進行状況バーが完全にいっぱいになります。

同期リクエストと非同期リクエストの両方を試しました。

ファイル自体をダウンロードしているのではなく、リクエストに対する HTTP レスポンスを受け取っているだけなので、ダウンロード進行状況デリゲートは機能しないと思います。この場合、進捗状況を監視するための正しいアプローチは何でしょうか?

前もって感謝します...

4

1 に答える 1

1

このコードをメインスレッドで実行していますか?

その場合、進行状況が更新されない理由は、同期要求を使用するとメイン スレッドがブロックされ、UI の更新が妨げられるためです。

そのための最善の修正は、非同期リクエストを使用することです-あなたはそれを試したと言いましたが、何が起こったのですか?

ヒント:

http 応答を出力し、Content-Length があるかどうかを確認します。そうでない場合、または 0 の場合は問題です。

NSLog(@"Response headers %@",[request responseHeaders]);
于 2010-10-07T07:34:35.113 に答える