2012-05-14 14 views
2

誰かがURLを要求したときにリダイレクトされた最後のURL(nth)を取得できる最も簡単なコードを投稿できますか?iOS 5で最後にリダイレクトされたURLを取得しますか?

私は非同期要求を使用する必要があることを知っていますが、問題を解決する完全な作業コードを試すことができません。

私はios5を使用していますので、ios5で最近追加された非同期inbuilt機能を使用することができます。

私はたくさんのことを試しましたが、私はまだうまくいきません。私はパラメータを持つGETリクエストを送信しようとしていますが、何らかの形でこれらのパラメータが原因サイトのリダイレクト:(に迷子にされている以下のコード!

NSURLRequest *request = [NSURLRequest requestWithURL:urlOriginal]; 

[NSURLConnection 
sendAsynchronousRequest:request 
queue:[NSOperationQueue mainQueue] 
completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) 
{ 
    NSLog("the returned data should be the final data of the redirected url with parameters but it is not"); 
}]; 

} 

EDIT

を使用すると、これは私が今やっていることです:

NSURLRequest *requestOriginal = [NSURLRequest requestWithURL:urlOriginal]; 

NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:requestOriginal delegate:self]; 

[connection start]; 

とデリゲート:

-(NSURLRequest *)connection:(NSURLConnection *)connection 
     willSendRequest:(NSURLRequest *)request 
     redirectResponse:(NSURLResponse *)redirectResponse 
{ 

    if (redirectResponse) { 
    NSMutableURLRequest *r = [request mutableCopy]; // original request 
    [r setURL: [request URL]]; 
    return r; 
} else { 
    NSLog(@"redirecting to : %@", [request URL]); 
    return request; 
} 
} 

とログは私に、私が最初に渡されたgetパラメータと一緒に必要な正しいリクエストURLを与えます。

このリクエストからデータを取得するにはどうすればよいですか?別のcompletionHandlerデリゲートメソッド?

EDIT2:((NSURLResponse *)応答

    • (ボイド)接続:(NSURLConnection *)接続didReceiveResponse Iは、他delgatesを実装よう

      オクラホマ接続:(NSURLConnection *)接続didReceiveData:(NSData *)データ

    • (void)接続:(NSURLConnection *)接続didFailWithError:(NSError *)エラー

    • (無効)connectionDidFinishLoading:(NSURLConnection *)接続

  • +0

    こんにちは。最後のリダイレクトURLを受け取ることができましたか?ありがとう。私は同じ問題を抱えています。 –

    答えて

    1

    ドキュメントのHandling Redirects and Other Request Changesをお読みください。簡単に言うと、a)あなたの接続の代理人を提供し、b)その代理人にconnection:willSendRequest:redirectResponse:というメソッドを実装する必要があります。あなたの質問で何をしようとしているのか正確にはわかりません。あなたの接続がリダイレクトされているURLのデータが必要なのか、リダイレクトされたリクエストを見たいのですか?どちらの方法でも、上記の方法を実装すると役立ちます。デリゲートはリダイレクトされたリクエストを見ることができ、変更されていないリクエストを返すと、接続は新しいURLをロードする必要があります。

    +0

    ありがとうございます。私はそのデリゲートメソッドを使用してみましたが、私は間違ってそれをやっていたと思います。もう一度やり直す! –

    +0

    他のすべてのデリゲートメソッドも追加しましたが、コード自体は機能しますが、私が望むものを達成できませんでした。これは私が上記のhttp://stackoverflow.com/questions/10549766/how-to-handle-redirecting-urls-with-get-parameters-in-the-requestを使って達成しようとしていることです –

    関連する問題