iPhone NSURL获取最后重定向的URL

时间:2009-12-23 11:26:16

标签: iphone url redirect

我想知道如何将您的NSURL更新为您的网址将重定向到的最后一个网址 使用NSURL或NSRequest

感谢您的帮助。 感谢。

4 个答案:

答案 0 :(得分:7)

zanque的解决方案有效,但为了避免下载“无用”数据,我将http方法更改为HEAD:

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:orinigalURL cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:15.0];
[request setHTTPMethod:@"HEAD"];
NSURLResponse *response = nil;
[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];
NSURL *finalURL = response.URL;

答案 1 :(得分:6)

我做到了,

这是如何

NSURL *originalUrl=[NSURL URLWithString:@"http://YourURL.com"];
NSData *data=nil;  
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:originalUrl cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:10];
NSURLResponse *response;
NSError *error;
data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSURL *LastURL=[response URL];
[request release];
[error release];

答案 2 :(得分:1)

尝试使用NSURLConnection进行连接后,您才能找到它。如果向NSURLConnection委托添加方法,-connection:willSendRequest:redirectResponse:,则会在重定向发生之前通知您。只需从传递的请求中获取URL,这就是您的答案。

答案 3 :(得分:0)

您导致以下快速代码获取最终的重定向网址:

            let request = NSMutableURLRequest(url: url, cachePolicy: .reloadIgnoringCacheData, timeoutInterval: 15.0)
        request.httpMethod = "HEAD"
        var response: URLResponse? = nil
        do {
            try NSURLConnection.sendSynchronousRequest(request as URLRequest, returning: &response)
        } catch { //Handle exception //if any
        }
        let finalURL = response?.url