获取iOS 5中最后一个redirect的url?

有人可以请求最简单的工作代码,可以得到最后一个redirect的url(nth)当我GET请求一个url?

我知道我需要使用asynchronous请求,但我无法制定出解决问题的完整工作代码。

我使用的是ios5,所以我可以使用ios5中最新添加的asynchronous内置function。

我尝试了很多东西,但是我还是不成功。 使用下面的代码,我试图发送一个获取请求的参数,但不知何故这些参数由于网站的redirect而丢失:(!

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; } } 

日志给了我正确的请求url,我需要与原来传递的get参数一起。

现在如何从这个请求中获取数据? 另一个completionHandler委托方法?

编辑2:

好,所以我也实施了其他的分类:

  • (void)连接:( NSURLConnection *)连接didReceiveResponse:(NSURLResponse *)响应

  • (void)连接:( NSURLConnection *)连接didReceiveData:(NSData *)数据

  • (void)连接:( NSURLConnection *)连接didFailWithError:(NSError *)错误

  • (void)connectionDidFinishLoading:(NSURLConnection *)连接

请阅读文档中的处理redirect和其他请求更改 。 简而言之,您将希望:a)为您的连接提供一个委托,并且b)在所述委托中实现方法connection:willSendRequest:redirectResponse: 。 我不明白你想要做什么在你的问题 – 你只是想从你的连接redirect的URL的数据,或者你想看到redirect的请求? 无论哪种方式,实施上述方法应该有所帮助。 您的委托将能够看到redirect的请求,并返回它的原因应该导致连接加载新的URL。