【问题标题】:how to detect redirects of url occurs while loading UIWebView on iphone?如何在 iphone 上加载 UIWebView 时检测 url 的重定向?
【发布时间】:2012-07-06 11:07:51
【问题描述】:

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

【问题讨论】:

    标签: iphone objective-c ios redirect uiwebview


    【解决方案1】:

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

    – webView:shouldStartLoadWithRequest:navigationType:
    

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

    也许从request你可以知道如果HTTP响应代码是3xx重定向然后你可以做你想做的......

    【讨论】:

    • 那么,我将如何获得重定向的 URL?
    • 或者,是他们找到哪个重定向失败的任何方法。实际上我的网址重定向了两次。如果第一次重定向失败,我需要执行一些操作。他们有什么办法吗?
    • 如何从请求本身中找出responsecode?​​span>
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

      试试这个:

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

      【讨论】:

      • 其实网站会自动重定向到另一个webUrl
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-21
      • 1970-01-01
      • 2015-04-08
      • 1970-01-01
      • 2013-04-12
      • 1970-01-01
      • 2012-10-25
      相关资源
      最近更新 更多