[NSData dataWithContentsOfURL:]
は302リダイレクトをどのように処理しますか?dataWithContentsOfURLとHTTP 302リダイレクト
ユーザーエージェントをチェックし、別のサーバーのMP3ファイルにリダイレクトするPHPページのURLを渡して、サーバーからMP3ファイルを要求しています。
[NSData dataWithContentsOfURL:]
は302リダイレクトをどのように処理しますか?dataWithContentsOfURLとHTTP 302リダイレクト
ユーザーエージェントをチェックし、別のサーバーのMP3ファイルにリダイレクトするPHPページのURLを渡して、サーバーからMP3ファイルを要求しています。
[NSData dataWithContentsOfURL:]
を実際のアプリで使用しないでください。それは同期ネットワーク接続を行い、アプリケーションが十分に速く終了しなければOSによって殺されます。
スティックto NSURLConnectionDataDelegate
または[NSURLConnection sendAsynchronousRequest:queue:completionHandler:
を使用してください。
私は '[NSURLConnection sendAsynchronousRequest:queue:completionHandler:]'を使って終わりました。私はマルチスレッドを発見しました。レコードの場合、 'NSURLConnection'は302を正しく処理します。 – colincameron
これは元の質問に対する回答ではありません。 + dataWithContentsOfURL:「実アプリケーション」内の別のスレッドでも使用できます – igrek
これは間違っています。 '[NSData dataWithContentsOfURL:]'は別のスレッドで使用することができます。ここでは100%安全です – Antzi
はこのように、[NSData dataWithContentsOfURL:]
が含まれているあなたのloadImageInBackground
関数を記述し、バックグラウンドスレッドでそれを実行します。
[self performSelectorInBackground:@selector(loadImageInBackground:) withObject:nil];
これは、同期ネットワーク接続をすることはありません(したがって、UIをフリーズしません)。
あなた自身で試したことがありますか? – Joe
@Joe、いいえこれはサーバー側がまだ生きていないからではありません。動作しないパスを辿る時間を無駄にしたくありません。私はちょうど誰かがこれを以前に試したかもしれないと思って、それが失敗し、彼らの経験を共有することができることを発見した。 – colincameron
それはうまく動作すると確信していますが、リダイレクトURLを作成して呼び出すことで確実に確認できます。たとえば、http://goo.glを試してください。 – Joe