天天瞎忙活,QQ:705719110,欢迎来撩!

iOS NSURLProtocol的使用

iOS开发 随风 624℃ 0评论

NSURLProtocol定义

这两天在优化项目,无意间看到了NSURLProtocol,学习一下顺便总结下来。
NSURLProtocol也是苹果众多黑魔法中的一种,能够让你去重新定义苹果的URL加载系统 (URL Loading System)的行为,URL Loading System里有许多类用于处理URL请求,比如NSURL,NSURLRequest,NSURLConnection和NSURLSession等,当URL Loading System使用NSURLRequest去获取资源的时候,它会创建一个NSURLProtocol子类的实例,NSURLProtocol看起来像是一个协议,但其实这是一个类,而且必须使用该类的子类,并且需要被注册。

NSURLProtocol使用范围

只要是使用NSURLConnection或者 NSURLSession实现的,你都可以通过NSURLProtocol做一些自定义的操作。
1、自定义请求和响应
2、网络的缓存处理(H5离线包 和 网络图片缓存)
3、重定向网络请求
4、为测试提供数据Mocking功能,在没有网络的情况下使用本地数据返回。
5、过滤掉一些非法请求
6、快速进行测试环境的切换
7、拦截图片加载请求,转为从本地文件加载
8、可以拦截UIWebView,基于系统的NSURLConnection或者NSURLSession进行封装的网络请求。目前WKWebView无法被NSURLProtocol拦截。
9、当有多个自定义NSURLProtocol注册到系统中的话,会按照他们注册的反向顺序依次调用URL加载流程。当其中有一个NSURLProtocol拦截到请求的话,后续的NSURLProtocol就无法拦截到该请求。

NSURLProtocol自定义

要实现下面的方法

使用自定义NSURLProtocol类

1.在单个的UIViewController中使用

2.拦截整个App中所有的网络请求

NSURLProtocol使用实例

上面用到的一些NSURLProtocolClient方法

转载请注明:怼码人生 » iOS NSURLProtocol的使用

喜欢 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址