NSHipster 之 NSURLProtocol
要点
- Foundation库的URL加载系统是每个iOS工程师应该熟练掌握的。
- 任何通过 NSURLConnection 进行的请求都会被系统的其他部分所拦截,这也使得当可用时显式地从硬盘加载缓存成为了可能。
- NSURLProtocol :你不必改动应用在网络调用上的其他部分,就可以改变URL加载行为的全部细节。
- 它是一个抽象类
- 你可以通过子类化来定义新的或已经存在的URL加载行为。
他的威力
- 拦截图片加载请求,转为从本地文件加载
- 为了测试对HTTP返回内容进行mock和stub
- 对发出请求的header进行格式化
- 对发出的媒体请求进行签名
- 创建本地代理服务,用于数据变化时对URL请求的更改
- 故意制造畸形或非法返回数据来测试程序的鲁棒性
- 过滤请求和返回中的敏感信息
- 在既有协议基础上完成对 NSURLConnection 的实现且与原逻辑不产生矛盾??
怎么玩?子类化NSURLProtocol
让子类识别并控制请求
直接读取本地文件,还是发起网络请求,黑客喜欢黑哪一种类型的
提供请求规范??
如果你想要用特定的某个方式来修改一个请求,应该使用 +canonicalRequestForRequest: 方法。每一个subclass都应该依据某一个规范,也就是说,一个protocol应该保证只有唯一的规范格式(虽然很多不同的请求可能是同一种规范格式)。(保证被黑了的人,被黑的方式都一样,下场都类似)
获取和设置请求的属性
黑客的工具以及套路:获取,添加,设置,移除属性
加载请求
加载环节有很多细节,可以设置这些换机中的代理方法,来达到流程的控制??
向URL加载系统注册子类
要成为能够做到中间人攻击的黑客,你也要注册:)
后面来的先干事。