2011-05-16 23 views
1

イメージの有効なリクエストに対して実際にレスポンスコード200を受け取るのはいつですか?すべてのデータがブラウザにダウンロードされた後、またはそれまでのデバイスがイメージをリクエストしていますか?私は私のiPadアプリで画像をダウンロードするには、ライブラリhttp://allseeing-i.com/ASIHTTPRequest/を使用して、ファイルオプションに直接ダウンロードを使用して、それが404エラーまたは200ASIHTTPRequestを使用してイメージの要求中に応答コードが受信されるのはいつですか?

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
[request setDownloadDestinationPath:@"/Users/ben/Desktop/my_file.jpg"]; 
以外のステータスコードだった場合、ファイルを削除しています

低速接続中に部分的な応答が保存されているように見えるので、空白の画像や壊れた画像で終了します。要求が完了した後、私はちょうど応答コードのみが戻ってくることを確認する

NSURL *url = [NSURL URLWithString: [[NSString stringWithFormat:kProductImagesURL, fileName] stringByAppendingString:tStamp]]; 
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
[request setTimeOutSeconds:10]; 
[request startSynchronous]; 

int statusCode = [request responseStatusCode]; 
if (statusCode==200) { 
    NSData *responseData = [request responseData]; 
    [responseData writeToFile:[savePath stringByReplacingOccurrencesOfString:@"%20" withString:@" "] atomically:YES]; 
    } 

は、私は200のステータスコードを受け取った後にのみ、ディスクへのデータ・ストリームを保存する代わりに決めましたすべてのデータがダウンロードされました。私は99%確信していますが、このような画像バグを持つ別のアプリリリースを買う余裕はありません。

答えて

1

おそらく、非同期要求に切り替えることを検討する必要がある理由は2つあります。最初は、メインスレッドをユーザーとやりとりすることができます(モーダルスピナーでもいいでしょう。そうでなければ、あなたのアプリがフリーズしたように見えます)。

第2に、コールバックはリクエスト全体が完了した後にのみ発生します。あなたが示したコードで部分的なデータしか得られなかっただけでは説明できませんが、ASIの非同期メソッドを使ってこの問題を一度も経験したことはありません。

+0

画像のダウンロードを示す素晴らしい進捗バーがあり、私はこの時点で非同期に切り替える必要はありません。ユーザーのやりとりは不要です。ステータスコードが来たときには本当に興味があります画像データが発生している場合には、ストリーミング前、ストリーミング中、ストリーミング後にバック・スルーする。 – Slee

関連する問題