NSURLConnection のリダイレクト ハンドラを実装しています。私の目的では、実際にはリダイレクトを行いたくありません。ページ全体をロードし、後で使用するためにリダイレクトを覚えておきたいのです。NSURLConnectionDataDelegate の connection:willSendRequest:redirectResponse: メソッドのドキュメントには、次のように記載されています。
リダイレクト応答に照らして使用する実際の URL 要求。デリゲートは、リダイレクトを許可するために変更されていないリクエストを返すか、新しいリクエストを返すか、リダイレクトを拒否して接続の処理を続行するために nil を返すことができます。
私はこのコードを試しました:
- (NSURLRequest *) connection: (NSURLConnection *) connection
willSendRequest: (NSURLRequest *) request
redirectResponse: (NSURLResponse *) redirectResponse
{
NSURL *url1 = [request URL];
NSURL *url2 = [redirectResponse URL];
if ([request URL] != nil)
self.redirect = [request URL];
return nil;
}
- (void) connection: (NSURLConnection *) theConnection didReceiveResponse: (NSURLResponse *) response {
NSURL *url1 = [response URL];
int foo = 0;
}
プログラムはconnection:didReceiveData:
、connection:didFailWithError:
またはを呼び出しませんでしconnectionDidFinishLoading:
た。request
の代わりに戻りnil
、プログラムはページを正常にロードしました。(リダイレクト先のURLは元のURLでしたが、それはまた別の質問です。関連がある場合は、2羽の鳥を殺して、それも答えてください。)
リダイレクトの試行後に NSURLConnection がファイルを処理し続けることを適切に許可するには、他に何か必要ですか?