2012-07-06 24 views

回答

5

是的,你可以做到這一點。實施

– webView:shouldStartLoadWithRequest:navigationType: 

delegate。只要您的webview即將發出請求,就會調用此方法。所以現在當有人點擊你網頁上的按鈕或超鏈接時,你會得到一個調用這個方法。在您接聽此通話後,您可以選擇隨心所欲地執行任何操作。像重定向鏈接通過自己的服務器,或登錄到您的關於用戶活動或在您的情況下服務器的請求彈出評論頁面或更改導航欄等

也許從request可以將相應的HTTP響應代碼搞清楚在3XX重定向,那麼你可以做你想做的......

+1

那麼,我將如何獲取重定向的URL? – neerajPK 2012-07-06 11:44:46

+0

或者,他們是否有辦法找到哪個重定向失敗。實際上我的網址重定向了兩次。如果第一次重定向生效,我需要做一些操作。是他們的任何方式? – neerajPK 2012-07-06 11:46:47

+0

如何找出請求本身的響應碼? – hariszaman 2014-07-17 13:41:40

1

試試這個:

-(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType { 
     if (inType == UIWebViewNavigationTypeLinkClicked){ 
      [[UIApplication sharedApplication] openURL:[inRequest URL]]; 
      return NO; 
     } 
     return YES; 
    } 
+0

實際上該網站會自動重定向到另一個webUrl – neerajPK 2012-07-06 11:57:25

2

我發現這個線程必須做同樣的當。我用斯里卡的答案,但這是我的代碼。

我正在使用伐木工人伐木,但你可以用NSLog替換下面。如果您正在查看主機,路徑或查詢字符串以瞭解是否存在故障(這是我所要做的),您還可以獲取URL的特定部分。如果重定向多次,每個請求都會在這裏被調用,如果你想要,你可以停下來做一些事情或者只是觀察。

-(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType 
{ 
    DDLogVerbose(@"Redirecting to URL: %@", inRequest.URL.absoluteString); 
    return YES; 
}