在 iphone 中加载 UIWebView 时是否有任何方法可以检测 url 重定向。当我加载 www.example.com 网址时,它会重定向到其他网址。我需要获取那些重定向 url,我们实际上在哪里处理重定向。
问问题
10860 次
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 回答