如何获取重定向的URL

时间:2012-11-22 04:28:07

标签: iphone html objective-c ios xcode

我有一个网址。当我尝试在浏览器中打开它时,它会重定向到另一个网址&显示内容。我想要那些内容但我没有得到重定向的URL。所以,我无法显示数据。

我如何以编程方式执行此操作?

e.g。我有的网址: http://www.windpowerengineering.com/?p=11020

&安培;重定向的网址为: http://www.windpowerengineering.com/design/mechanical/blades/bladeless-turbine-converts-wind-into-fluid-power/

我想要这个重定向的网址。我怎么能得到这个?

4 个答案:

答案 0 :(得分:4)

1)指定您的类符合UIWebViewDelegate协议(并确保您的WebView的委托插座已连接到您的视图控制器):

@interface YourWebsiteViewController : UIViewController <UIWebViewDelegate>

2)添加以下委托方法:

-(void)webViewDidStartLoad:(UIWebView *)webView
{
    NSURL *url = [webView.request mainDocumentURL];
    NSLog(@"The Redirected URL is: %@", url);
}

根据您尝试对此信息执行的操作,您可能希望将#2替换为此方法(这将使您有机会阻止加载页面):

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSURL *url = [request mainDocumentURL];
    NSLog(@"The Redirected URL is: %@", url);
    // Return YES if you want to load the page, and NO if you don't.
    return NO;
}

答案 1 :(得分:0)

使用javascript

document.referrer

答案 2 :(得分:0)

该URL是http标头的一部分。这就是发生的事情:

请求1:http://www.windpowerengineering.com/?p=11020

回复1:页面已移至http://www.windpowerengineering.com/design/mechanical/blades/bladeless-turbine-converts-wind-into-fluid-power/

然后您的浏览器将会:

请求2:http://www.windpowerengineering.com/design/mechanical/blades/bladeless-turbine-converts-wind-into-fluid-power/

回复3:这是html

如果查看响应1中的http标头,您将能够从Location标头中提取网址。在Objective C中,这是一种方法:

NSURLResponse* response = // the response, from somewhere
NSDictionary* headers = [(NSHTTPURLResponse *)response allHeaderFields];
NSString* redirection_url = [headers objectForKey:@"Location"];

在上面的代码中,您可以访问headers字典中的所有响应http标头。

答案 3 :(得分:0)

您是否尝试过此委托方法?

-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{

只要webview加载网页,就会调用它。

您可以从此方法的某个参数request

中获取网址
    NSURL *regURL=[request URL];
NSString *urlString=[regURL absoluteString];