2012-11-22 64 views
3

我有一个URL.when我尝试在浏览器中打开它,它会重定向到另一个URL &显示内容。我想要那个内容但是我没有得到那个重定向的URL。所以,我无法显示数据。如何获取重定向的URL

我该如何编程?

例如我所网址:http://www.windpowerengineering.com/?p=11020

&重定向的URL是:http://www.windpowerengineering.com/design/mechanical/blades/bladeless-turbine-converts-wind-into-fluid-power/

我想这个重定向的URL。我怎么能得到这个?

回答

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

是的,它的工作,但我想在网络视图之前获取重定向url **加载**和显示。 – user1673099

+0

@ user1673099我编辑了回复。 –

+0

是的,太棒了!非常感谢!再次感谢! – user1673099

0

采用javascript

document.referrer 
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

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

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

在上面的代码,你可以访问所有的响应HTTP头从headers字典。

+0

我怎样才能得到位置标题编程 – user1673099

+0

@ user1673099,我更新了我的回应。 – Roman

+0

你能帮我一些代码,因为我没有得到你的观点,比如如何得到请求的回应1 – user1673099

0

你试过这种委托方法吗?

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

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

你可以从这个方法的参数之一的URL,request

NSURL *regURL=[request URL]; 
NSString *urlString=[regURL absoluteString]; 
+0

我得到了urlString作为about:blank – user1673099