2012-03-06 20 views
2

[NSData dataWithContentsOfURL:]は302リダイレクトをどのように処理しますか?dataWithContentsOfURLとHTTP 302リダイレクト

ユーザーエージェントをチェックし、別のサーバーのMP3ファイルにリダイレクトするPHPページのURLを渡して、サーバーからMP3ファイルを要求しています。

+0

あなた自身で試したことがありますか? – Joe

+0

@Joe、いいえこれはサーバー側がまだ生きていないからではありません。動作しないパスを辿る時間を無駄にしたくありません。私はちょうど誰かがこれを以前に試したかもしれないと思って、それが失敗し、彼らの経験を共有することができることを発見した。 – colincameron

+0

それはうまく動作すると確信していますが、リダイレクトURLを作成して呼び出すことで確実に確認できます。たとえば、http://goo.glを試してください。 – Joe

答えて

2

[NSData dataWithContentsOfURL:]を実際のアプリで使用しないでください。それは同期ネットワーク接続を行い、アプリケーションが十分に速く終了しなければOSによって殺されます。

スティックto NSURLConnectionDataDelegateまたは[NSURLConnection sendAsynchronousRequest:queue:completionHandler:を使用してください。

+0

私は '[NSURLConnection sendAsynchronousRequest:queue:completionHandler:]'を使って終わりました。私はマルチスレッドを発見しました。レコードの場合、 'NSURLConnection'は302を正しく処理します。 – colincameron

+4

これは元の質問に対する回答ではありません。 + dataWithContentsOfURL:「実アプリケーション」内の別のスレッドでも使用できます – igrek

+0

これは間違っています。 '[NSData dataWithContentsOfURL:]'は別のスレッドで使用することができます。ここでは100%安全です – Antzi

1

はこのように、[NSData dataWithContentsOfURL:] が含まれているあなたのloadImageInBackground関数を記述し、バックグラウンドスレッドでそれを実行します。

[self performSelectorInBackground:@selector(loadImageInBackground:) withObject:nil]; 

これは、同期ネットワーク接続をすることはありません(したがって、UIをフリーズしません)。

関連する問題