【发布时间】:2010-12-29 11:05:25
【问题描述】:
我想知道如何将您的 NSURL 更新为您的网址将重定向到的最后一个网址
使用 NSURL 或 NSRequest
感谢您的帮助。 谢谢。
【问题讨论】:
我想知道如何将您的 NSURL 更新为您的网址将重定向到的最后一个网址
使用 NSURL 或 NSRequest
感谢您的帮助。 谢谢。
【问题讨论】:
只有在尝试使用 NSURLConnection 进行连接后才能发现这一点。如果你向你的 NSURLConnection 委托添加一个方法,-connection:willSendRequest:redirectResponse:,你会在重定向发生之前得到通知。只需从传递的请求中获取 URL,这就是您的答案。
【讨论】:
我做到了,
方法如下
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];
【讨论】:
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;
【讨论】:
您使用以下 swift 代码获取最终重定向的 url:
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
【讨论】: