iOS中的 NSURLProtocol 初识

iOS中的 NSURLProtocol 简介

  1. NSURLProtocol是 iOS 里面的URL Loading System的一部分,但是从它的名字来看,你绝对不会想到它会是一个对象,可是它偏偏是个对象。。。而且还是抽象对象(可是OC里面没有抽象这一说)。平常我们做网络相关的东西基本很少碰它,但是它的功能却强大得要死。

  2. URL loading system 原生已经支持了http,https,file,ftp,data这些常见协议,当然也允许我们定义自己的protocol去扩展,或者定义自己的协议。当URL loading system通过NSURLRequest对象进行请求时,将会自动创建NSURLProtocol的实例(可以是自定义的)。这样我们就有机会对该请求进行处理。官方文档里面介绍得比较少.

iOS 开发中使用 NSURLProtocol 拦截 HTTP 请求

iOS NSURLProtocol 作用:

1.自定义请求和响应

2.提供自定义的全局缓存支持

3.重定向网络请求

4.提供HTTP Mocking (方便前期测试)

5.其他一些全局的网络请求修改需求

注意点

需要注意的是 NSURLProtocol 只能拦截 UIURLConnection 、 NSURLSession 和 UIWebView 中的请求,对于 WKWebView 中发出的网络请求也无能为力,如果真的要拦截来自 WKWebView 中的请求,还是需要实现 WKWebView 对应的 WKNavigationDelegate ,并在代理方法中获取请求。 无论是 NSURLProtocol 、 NSURLConnection 还是 NSURLSession 都会走底层的 socket,但是 WKWebView 可能由于基于 WebKit,并不会执行 C socket 相关的函数对 HTTP 请求进行处理,具体会执行什么代码暂时不是很清楚,


API.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容