NSURLProtocol的总结】的更多相关文章

最近在项目里由于电信那边发生dns发生域名劫持,因此需要手动将URL请求的域名重定向到指定的IP地址,但是由于请求可能是通过NSURLConnection,NSURLSession或者AFNetworking等方式,因此要想统一进行处理,一开始是想通过Method Swizzling去hook cfnetworking底层方法,后来发现其实有个更好的方法–NSURLProtocol. NSURLProtocol NSURLProtocol能够让你去重新定义苹果的URL加载系统 (URL Load…
来源:景铭巴巴 链接:http://www.jianshu.com/p/03ddcfe5ebd7 iOS H5 容器的一些探究(一):UIWebView 和 WKWebView 的比较和选择 一.前言 NSURLProtocol是iOS中URL Loading System的一部分.如果开发者自定义的一个NSURLProtocol并且注册到app中,那么在这个自定义的NSURLProtocol中我们可以拦截UIWebView,基于系统的NSURLConnection或者NSURLSession进…
这篇文章会提供一种在 Cocoa 层拦截所有 HTTP 请求的方法,其实标题已经说明了拦截 HTTP 请求需要的了解的就是 NSURLProtocol. 由于文章的内容较长,会分成两部分,这篇文章介绍 NSURLProtocol 拦截 HTTP 请求的原理,另一篇文章如何进行 HTTP Mock 介绍这个原理在 OHHTTPStubs 中的应用,它是如何 Mock(伪造)某个 HTTP 请求对应的响应的. NSURLProtocol NSURLProtocol 是苹果为我们提供的 URL Loa…
众所周知,iOS 9.0之后苹果引入ATS限制,苹果也推荐尽量不要使用HTTP通讯了,毕竟是很不安全的.而国内各个有(wu)节操的运营商也会经常篡改请求HTTP请求.所以如果可能,在不影响性能的情况下,使用https总是更好一点.但是移动网络下HTTPS的握手耗时,也总是很让人难已接受.那么考虑整合Spdy来减少握手时间的损耗,复用链接来进行通讯,是一个不错的尝试. 但对于老的app,尤其是本地已经存储了大量的老旧URL来说,尝试数据升级将本地数据库里的各种http转成https的操作也是令人发…
转自:iOS知识小集 NSURLProtocol类(注意,这个不是协议)经常用于实现一些URL Loading System相关的黑魔法.它可以拦截URL Loading System相关的网络请求,如UIWebView,NSURLSession.MPMoviePlayer等,以自定义一些操作,如自定义网络请求的响应.缓存.重定向网络请求(将域名重定向到IP地址)等. 由于NSURLProtocol是一个抽象类,所以通常是创建一个NSURLProtocol子类,来定制我们所需要的实现.图1.2演…
这篇文章会提供一种在 Cocoa 层拦截所有 HTTP 请求的方法,其实标题已经说明了拦截 HTTP 请求需要的了解的就是 NSURLProtocol. 由于文章的内容较长,会分成两部分,这篇文章介绍 NSURLProtocol 拦截 HTTP 请求的原理,另一篇文章如何进行 HTTP Mock(iOS) 介绍这个原理在 OHHTTPStubs 中的应用,它是如何 Mock(伪造)某个 HTTP 请求对应的响应的. NSURLProtocol NSURLProtocol 是苹果为我们提供的 UR…
项目地址github:<a href="https://github.com/LiuShuoyu/HybirdWKWebVIew/">HybirdWKWebVIew</a> HybridNSURLProtocol 一个基于WKWebView的hybirde的容器.能拦截所有WKWKWebView的的css,js,png等网络请求的demoNSURLProtocol 子类,就可以对 app 内所有的网络请求进行: [NSURLProtocol registerCl…
iOS8以后,苹果推出了新框架Webkit,提供了替换UIWebView的组件WKWebView.各种UIWebView的问题没有了,速度更快了,占用内存少了,一句话,WKWebView是App内部加载网页的最佳选择!我们做开发最关系的是内存问题,基本上网上所有的资料都在说WKWebview的内存占用会更少,但是到底少了多少我这边做了下测试,同样是加载163的首页   使用UIWebView的内存     使用WKWebview的内存 从上图看出内存大概能优化百分之八十左右,而且从网页的滑动上也…
问题:因dns发生域名劫持 需要手动将URL请求的域名重定向到指定的IP地址 最近在项目里由于电信那边发生dns发生域名劫持,因此需要手动将URL请求的域名重定向到指定的IP地址,但是由于请求可能是通过NSURLConnection,NSURLSession或者AFNetworking等方式,因此要想统一进行处理,一开始是想通过Method Swizzling去hook cfnetworking底层方法,后来发现其实有个更好的方法--NSURLProtocol. NSURLProtocol NS…
本文转载至 http://blog.csdn.net/u014011807/article/details/39894247 NSURLProtocol 是iOS中非常重要的一个部分,我们经常会在以下地方用到它: (1)网络请求代理转发(FQ 网络加速等) (2)离线缓存策略 总之,只要是需要对本地的URL请求进行截获的,我们都需要使用这个东东. IOS中我们经常使用的网络请求NSURLConnection以及WebView的页面加载都会被NSURLProtocol截获,因此这个部分的核心就是如…
前言 开发中遇到需要获取SDK中的数据,由于无法看到代码,所以只能通过监听所有的网络请求数据,截取相应的返回数据,可以通过NSURLProtocol实现,还可用于与H5的交互 一.NSURLProtocol拦截请求 1.NSURLProtoco简介 NSURLProtocol的官方定义 An NSURLProtocol object handles the loading of protocol-specific URL data. The NSURLProtocol class itself…
NSURLProtocol 的本质是对特殊的scechme进行特殊的协议定制: 网络(应用层)请求的统一入口是nsurlconnection和nsurlsession; http.htp.mail等协议都是: 如果是不存在的协议,比如 google://gohere.oo 需要自己在网络层的基础上进行协议定制: 而目前的常用使用是对常规的网络通信进行拦截处理,进一步转发请求网络数据: 充当的是拦截.转发代理的角色: 它能够拦截的对象不限于uiwebview的网络请求:常规的网络请求也能处理. 充…
问题:服务器端有一个网站需要AD认证,整站都开了Basic认证,包括图片,CSS等资源,我在HTTP请求头里面添加认证所需的用户名和密码,传递到服务器端可以认证通过.我在UIWebView的shouldStartLoadWithRequest代理方法中拦截WebView的请求,然后在请求的Header中添加认证所需的用户名和密码,然后使用NSURLSession重新发出HTTP的请求,这种方法可以解决大部分的网络请求,但是无法拦截到网页内部的ajax请求,所以所有的ajax请求都会失败,一旦遇到…
http://www.cnblogs.com/xiaxlsblog/archive/2013/08/09/NSURLProtocol-xiaxl.html NSURLProtocol是一个抽象类.NSURLProtocol是NSURLConnection的handler. 所有的通过NSURLConnection发出的请求都会走NSURLProtocol协议.UIWebView也是走NSURLProtocol. NSURLProtocol通过+ (BOOL)registerClass:(Clas…
An NSURLProtocol object handles the loading of protocol-specific URL data. @abstract This method registers a protocol class, making it visible to several other NSURLProtocol class methods. @discussion When the URL loading system begins to load a requ…
http://blog.csdn.net/youcanping2008/article/details/9240487…
前言 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 浅谈Hybrid技术的设计与实现第三弹——落地篇 接上文:浅谈Hybrid技术的设计与实现(阅读本文前,建议阅读这个先) 上文说了很多关于Hybrid的概要设计,可以算得上大而全,有说明有demo有代码,对于想接触Hybrid的朋友来说应该有一定帮助,但是对于进阶的朋友可能就不太满足了,他们会想了解其中的每一个细节,甚至是一些Native的实现,小钗这里继续抛砖引玉,希望接下来的内容对各位有一定帮助. 进入今天的内容…
在 App 混合开发中,app 层向 js 层提供接口有两种方式,一种是同步接口,一种一异步接口(不清楚什么是同步的请看这里的讨论).为了保证 web 流畅,大部分时候,我们应该使用异步接口,但是某些情况下,我们可能更需要同步接口.同步接口的好处在于,首先 js 可以通过返回值得到执行结果:其次,在混合式开发中,app 层导出的某些 api 按照语义就应该是同步的,否则会很奇怪——一个可能在 for 循环中使用的,执行非常快的接口,比如读写某个配置项,设计成异步会很奇怪. 那么如何向 js 层导…
起因 开玩笑说“iOS搞不动了”,另外一方面iOS组的哥哥们给力,少一个我也妥妥的.又听闻web前端组来了一个不得了的人物,“老司机,带带我”这种机会不能错过,1个多月前就申请转web前端了.开始是苦涩的,学习CSS.JS...... 自生自灭.自我生长.自己不懂.老司机也忙根本飞不起来. 转机是后来老司机从业务中解脱了出来,计划自己搞一套Hybird开发框架,过程中会需要Native的同事协助,我也懂了那么一点点点点H5(也许是即将懂),So强势插入. 遇到的几个问题 Dog_Hybird这个…
在移动端开发者中最重要的KPI应该是崩溃率.当崩溃率稳定下来后,工作的重心就应该转移到性能优化上.那么问题来了,如果你的项目也没有接入任何性能监测SDK,没有量化的指标来衡量,那你说你优化了性能领导信么? 虽然现在市面上第三方性能检测平台已经很成熟,但笔者还是比较建议公司自己写自己的sdk,原因如下 1. 数据安全 2. 避开费用,有的平台是MAU三万以下不收费,超出后费用极高. 3. 可以自定义指标没有无用代码,一接别人SDK包体积增大不少,其实你只用到了个别几个功能. 本文主要内容是给小项目…
属性介绍: //获取当前应用的缓存管理对象 + (NSURLCache *)sharedURLCache; //设置自定义的NSURLCache作为应用缓存管理对象 + (void)setSharedURLCache:(NSURLCache *)cache; //初始化一个应用缓存对象 /* memoryCapacity 设置内存缓存容量 diskCapacity 设置磁盘缓存容量 path 磁盘缓存路径 内容缓存会在应用程序退出后 清空 磁盘缓存不会 */ - (instancetype)in…
http://www.jianshu.com/p/0042d8eb67c0 最近整理了一下原生与H5之间的交互方式,简单的做个总结.OC端与JS的交互,大致有这几种:拦截协议.JavaScriptCore库.WKWebView.自定义NSURLProtocol拦截.WebViewJavascriptBridge. JavaScriptCore一个iOS7引进的标准库,iOS7以前也有开发者自行导入使用.Web端也比较容易统一. WebViewJavascriptBridge是一个第三方库,其原理…
<来着微信平台>  http://mp.weixin.qq.com/s?__biz=MjM5NTIyNTUyMQ==&mid=2709545194&idx=1&sn=e0e20cd038874aaf57b7e9de0910ab92&scene=23&srcid=0919MyL6LzVkXrSWlpqjyYbr#rd 1零基础小白如何进行 iOS 系统学习首先,学习目标要明确:其次,有了目标,要培养兴趣,经常给自己一些正面的反馈,比如对自己的进步进行鼓励,…
http://www.raywenderlich.com/category/ios http://www.raywenderlich.com/50310/storyboards-tutorial-in-ios-7-part-2 Obj http://www.cocoachina.com/industry/20131213/7537.html ios storyboard Storyboards Tutorial in iOS 9: Part 1 Storyboards Tutorial in i…
写在开头: 作为一个iOS开发,也许你不知道NSUrlRequest.不知道NSUrlConnection.也不知道NSURLSession...(说不下去了...怎么会什么都不知道...)但是你一定知道AFNetworking. 大多数人习惯了只要是请求网络都用AF,但是你真的知道AF做了什么吗?为什么我们不用原生的NSURLSession而选择AFNetworking? 本文将从源码的角度去分析AF的实际作用. 或许看完这篇文章,你心里会有一个答案. 先从最新的AF3.x讲起吧: 首先,我们…
方式一:截取请求正则.图片缓存 实现webview缓存网页内容难点在缓存图片上.html代码的缓存相对简单,具体实现思路是这样的:第1步.先获取html页面里所有图片地址.方法一:离线获取获取到html代码.html代码你可以把他理解成是一个很长的字符串.通过正则表达式把这个html页面里的所有img标签url.如果是相对url,就加上host.如果是绝对url,就直接下载.这样这个页面里的所有图片路径都拿到了.方法一的获取img标签url的正则表达式:NSString *urlPattern …
转自@夏小BO的技术博客: Cordova,对这个名字大家可能比较陌生,大家肯定听过 PhoneGap 这个名字,Cordova 就是 PhoneGap 被 Adobe 收购后所改的名字.(Cordova网址以及框架下载地址:http://cordova.apache.org/) Cordova 是一个可以让 JS 与原生代码(包括 Android 的 java,iOS 的 Objective-C 等)互相通信的一个库,并且提供了一系列的插件类,比如 JS 直接操作本地数据库的插件类. 这些插件…
网络层在一个App中也是一个不可缺少的部分,工程师们在网络层能够发挥的空间也比较大.另外,苹果对网络请求部分已经做了很好的封装,业界的AFNetworking也被广泛使用.其它的ASIHttpRequest,MKNetworkKit啥的其实也都还不错,但前者已经弃坑,后者也在弃坑的边缘.在实际的App开发中,Afnetworking已经成为了事实上各大App的标准配置. 网络层在一个App中承载了API调用,用户操作日志记录,甚至是即时通讯等任务.我接触过一些App(开源的和不开源的)的代码,在…
昨天,一个朋友让我帮他在IOS上弄这样一件事情: webView 调用远程URL,并且让远程的web 通过自定义标签能实现内嵌本地的图片.js 或音频等. 比如:在服务器端 的html文件中 这样写到 <html> <body> <h1>we are loading a custom protocl</h1> <b>image?</b><br/> <img src="myapp://image1.png&q…
下面是用GET方式请求一个页面数据的示例: AFNetworking 2.x NSString *siteUrl = @"http://webinar.ofweek.com/readDemoFile.action"; NSDictionary *parameters = @{"}; AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; manager.response…