9

在 iphone 中加载 UIWebView 时是否有任何方法可以检测 url 重定向。当我加载 www.example.com 网址时,它会重定向到其他网址。我需要获取那些重定向 url,我们实际上在哪里处理重定向。

4

3 回答 3

5

是的,你可以这样做。实施

– webView:shouldStartLoadWithRequest:navigationType:

这位代表。每当您的 webview 即将发出请求时,都会调用此方法。因此,现在当有人点击您网页上的按钮或超链接时,您将收到对该方法的调用。接到这个电话后,你可以选择用它做任何你想做的事情。就像通过您自己的服务器重定向链接,或者向您的服务器记录有关用户活动的请求,或者在您的情况下打开评论页面或更改导航栏等。

也许从request你可以弄清楚HTTP响应代码是否是3xx重定向然后你可以做你想做的......

于 2012-07-06T11:42:26.907 回答
2

当不得不做同样的事情时,我发现了这个线程。我使用了 Srikar 的答案,但这是我的代码。

我正在使用 Lumberjack 日志记录,但您可以仅将以下内容替换为 NSLog。如果您正在查看主机、路径或查询字符串以了解是否存在故障(这是我将要做的),您还可以获得 URL 的特定部分。如果它多次重定向,每个请求都会在这里调用,如果你愿意,你可以停止它并做一些事情或只是观察。

-(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest   navigationType:(UIWebViewNavigationType)inType
{
    DDLogVerbose(@"Redirecting to URL: %@", inRequest.URL.absoluteString);
    return YES;
}
于 2013-02-17T19:56:14.643 回答
1

尝试这个:

-(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType {
        if ( inType == UIWebViewNavigationTypeLinkClicked ){
           [[UIApplication sharedApplication] openURL:[inRequest URL]];
            return NO;
        }
       return YES;
    }
于 2012-07-06T11:47:48.173 回答