我有一个URL.when我尝试在浏览器中打开它,它会重定向到另一个URL &显示内容。我想要那个内容但是我没有得到那个重定向的URL。所以,我无法显示数据。如何获取重定向的URL
我该如何编程?
例如我所网址:http://www.windpowerengineering.com/?p=11020
我想这个重定向的URL。我怎么能得到这个?
我有一个URL.when我尝试在浏览器中打开它,它会重定向到另一个URL &显示内容。我想要那个内容但是我没有得到那个重定向的URL。所以,我无法显示数据。如何获取重定向的URL
我该如何编程?
例如我所网址:http://www.windpowerengineering.com/?p=11020
我想这个重定向的URL。我怎么能得到这个?
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;
}
采用javascript
document.referrer
即URL是http头的一部分。这就是发生的事情:
请求1:http://www.windpowerengineering.com/?p=11020
,然后你的浏览器会去:
响应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
字典。
我怎样才能得到位置标题编程 – user1673099
@ user1673099,我更新了我的回应。 – Roman
你能帮我一些代码,因为我没有得到你的观点,比如如何得到请求的回应1 – user1673099
你试过这种委托方法吗?
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
只要webview加载网页,它就会被调用。
你可以从这个方法的参数之一的URL,request
NSURL *regURL=[request URL];
NSString *urlString=[regURL absoluteString];
我得到了urlString作为about:blank – user1673099
是的,它的工作,但我想在网络视图之前获取重定向url **加载**和显示。 – user1673099
@ user1673099我编辑了回复。 –
是的,太棒了!非常感谢!再次感谢! – user1673099