您的位置:首页 > 理论基础 > 计算机网络

webView 拦截网络请求

2015-12-17 21:56 681 查看
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

{

    // 1.获得url

    NSString *url = request.URL.absoluteString;

    

    // 2.判断是否为回调地址

    NSRange range = [url
rangeOfString:@"code="];

    if (range.length !=0) {//
是回调地址

        //
截取code=后面的参数值

        NSUInteger fromIndex = range.location + range.length;

        NSString *code = [url
substringFromIndex:fromIndex];

        

        //
利用code换取一个accessToken

        [selfaccessTokenWithCode:code];

        

        //
禁止加载回调地址

        return NO;

    }

    

// 允许加载

    return
YES;

}

 /**
这个是某个资源在 mainBundle
中的 url webView
可以利用这个 url 加载 mainBundle
的东西 webView
可以加载 ppt, mp4, text, mp3,
动态图片等吧*/

        [[NSBundle
mainBundle]URLForResource:@"资源名称"
withExtension:@"资源类型"];

/**
webView 加载完成*/

- (void)webViewDidFinishLoad:(UIWebView *)webView

{

    if ([webView.request.URL.absoluteString
isEqualToString:self.deal.deal_h5_url]) {/** url的
string 值*/

        //
旧的HTML5页面加载完毕

        NSString *ID = [self.deal.deal_id
substringFromIndex:[self.deal.deal_id
rangeOfString:@"-"].location +
1];

        NSString *urlStr = [NSString
stringWithFormat:@"http://lite.m.dianping.com/group/deal/moreinfo/%@", ID];

        [self.webView
loadRequest:[NSURLRequest
requestWithURL:[NSURL
URLWithString:urlStr]]];

    } else {
// 详情页面加载完毕

        //
用来拼接所有的JS

        NSMutableString *js = [NSMutableString
string];

        //
删除header

        [js appendString:@"var header = document.getElementsByTagName('header')[0];"];

        [js appendString:@"header.parentNode.removeChild(header);"];

        //
删除顶部的购买

        [js appendString:@"var box = document.getElementsByClassName('cost-box')[0];"];

        [js appendString:@"box.parentNode.removeChild(box);"];

        //
删除底部的购买

        [js appendString:@"var buyNow = document.getElementsByClassName('buy-now')[0];"];

        [js appendString:@"buyNow.parentNode.removeChild(buyNow);"];

        

        //
利用webView执行JS

        [webView stringByEvaluatingJavaScriptFromString:js];

        

        // 获得页面

//        NSString *html = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('html')[0].outerHTML;"];

        //
显示webView

        webView.hidden =
NO;

        //
隐藏正在加载

        [self.loadingView
stopAnimating];

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: