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];
}
}
{
// 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];
}
}
相关文章推荐
- JAVA学习第五十九课 — 网络编程概述
- 黑马程序员——网络编程之TCP
- [连载]《C#通讯(串口和网络)框架的设计与实现》- 10.宿主程序详细设计
- 黑马程序员_java网络编程
- 网络流男女配对问题java实现
- Xcode7 Http请求
- 网络流做题汇总
- iftop ---Linux网络流量监控工具
- Linux获取网络接口信息
- CCNA考试情况及心得体会
- VirtualBox的网络配置,Host Only+NAT方式
- Xcode7 网络请求报错:The resource could not be loaded because the App Transport Security policy requir
- hdu 4888 Redraw Beautiful Drawings 网络流
- 修改HttpServletRequest的参数【转】
- 判断Android 手机网络连接
- apache http service 2.4 + mod_jk + tomcat 8 集群配置总结
- atitit.网络文件访问协议.unc smb nfs ftp http的区别
- atitit.网络文件访问协议.unc smb nfs ftp http的区别
- atitit.网络文件访问协议.unc smb nfs ftp http的区别
- GNS下搭建ISIS和BGP混合网络环境