誰かが私がURLをリクエストしたときに最後にリダイレクトされたURL(n番目)を取得できる最も単純なコードを投稿できますか?
非同期リクエストを使用する必要があることはわかっていますが、問題を解決する完全に機能するコードを作成することはできません。
私はios5を使用しているので、ios5に追加された最新の非同期組み込み機能を使用できます。
私はたくさんのことを試みましたが、まだ成功していません。以下のコードを使用して、パラメーターを使用して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");
}];
}
編集
だからこれは私が今やったことです:
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:
さて、他のデルゲートも実装しました:
(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
(void)connectionDidFinishLoading:(NSURLConnection *)connection