截获UIWebView的Request

本文为博主原创,转载请注明出处: http://blog.csdn.net/xiemotongye/article/details/9247177

UIWebView也许你常用的一个控件,它相当于一个内置的safari浏览器,用它浏览网页非常方便好用。

但是我们毕竟是开发app的,单纯的网页浏览也许无法满足我们的需求。也许你会遇到这样的需求:点击网页中的某个链接,但是此时WebView并不需要跳转到那个链接所指向的URL,而是想让app内部做一些有趣的事情,这个想法可以实现吗?

答案是肯定的,为了截获UIWebView中的Request,我们的controller首先要继承UIWebViewDelegate协议。然后实现协议中的方法:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType。

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSString *urlStr = [request.URL absoluteString];

    // here is your request URL
    NSString *theURL = @"http://xxxxx";

    if ([urlStr isEqualToString:theURL]) {
        // do something interesting here.
        return NO;
    }
    
    return YES;
}
如果请求地址和你设定的theURL相同,则做些有趣的事情,这时的“return NO;”表示UIWebView将直接截获request,不会发生页面跳转。如果改成“return YES;”则不但可以做些有趣的事情,而且request依然可以发送出去。

你可能感兴趣的:(iOS开发)