我有一个网址。当我尝试在浏览器中打开它时,它会重定向到另一个网址&显示内容。我想要那些内容但我没有得到重定向的URL。所以,我无法显示数据。
我如何以编程方式执行此操作?
e.g。我有的网址: http://www.windpowerengineering.com/?p=11020
&安培;重定向的网址为: http://www.windpowerengineering.com/design/mechanical/blades/bladeless-turbine-converts-wind-into-fluid-power/
我想要这个重定向的网址。我怎么能得到这个?
答案 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
然后您的浏览器将会:
回复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];