如何检测UIWebView中的重定向

zor*_*o2b 21 url cocoa-touch uiwebview ios

我在我的应用程序中使用UIWebView作为嵌入式浏览器.我遇到的问题是跟踪应在URL栏中显示的URL.

在进行Google搜索时,结果页面通常会生成以下链接:

http://www.google.com/url?sa=t&source=web&cd=1&ved=0CC4QFjAA&url=http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FDog&rct=j&q=dogs&ei=27XeTc6RFIWEvAO858DHBQ&usg=AFQjCNGkEDcWzea4pSlurHhcuQfqFcp_pw

当用户单击此链接时,UIWebView首先报告此链接,然后报告重定向的链接shouldStartLoadWithRequest:navigationType:.

我如何判断这是一个重定向,而不是为页面上的图像或其他元素加载一些补充网站?目前我的网址栏显示的是上述示例中Google的长链接,而不是更新到维基百科网址.

the*_*aws 19

你真正做的最好的就是观察webView:shouldStartLoadWithRequest:navigationType:委托方法.我认为重定向属于UIWebViewNavigationTypeOther.


Pow*_*tar 7

现在有点晚了,但我会使用webViewDidFinishLoadwebViewDidStartLoad委托方法来检测重定向,如下所示:

- (void)webViewDidStartLoad:(UIWebView *)webView{

    myRequestedUrl= [webView.request mainDocumentURL];
    NSLog(@"Requested url: %@", myRequestedUrl);    
}

- (void)webViewDidFinishLoad:(UIWebView *)webView{  

    myLoadedUrl = [webView.request mainDocumentURL];
    NSLog(@"Loaded url: %@", myLoadedUrl);

   //psudocode
   if(myRequestedUrl is not the same as myLoadedUrl){
      doSomething
   }
}
Run Code Online (Sandbox Code Playgroud)