美文网首页
iOS中的 NSURLProtocol 初识

iOS中的 NSURLProtocol 初识

作者: 晓飞90 | 来源:发表于2017-06-23 15:38 被阅读21次

    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

    相关文章

      网友评论

          本文标题:iOS中的 NSURLProtocol 初识

          本文链接:https://www.haomeiwen.com/subject/vlpccxtx.html