4

我有一个 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

4 回答 4

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;
}
于 2012-11-22T05:15:33.987 回答
0

使用 javascript

document.referrer
于 2012-11-22T04:31:19.833 回答
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标头中提取 url。在 Objective C 中,这是一种方法:

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

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

于 2012-11-22T04:32:29.173 回答
0

你试过这个委托方法吗?

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

每当 webview 加载网页时都会调用它。

您可以从此方法的参数之一获取 URL,request

    NSURL *regURL=[request URL];
NSString *urlString=[regURL absoluteString];
于 2012-11-22T04:35:19.947 回答