小说网站 搜小说 无限网 烟雨红尘 小说爱好者 免费小说 免费小说网站

iOS中的NSURLProtocol

转自:iOS知识小集

NSURLProtocol类(注意,这个不是协议)经常用于实现一些URL Loading System相关的黑魔法。它可以拦截URL Loading System相关的网络请求,如UIWebView,NSURLSession、MPMoviePlayer等,以自定义一些操作,如自定义网络请求的响应、缓存、重定向网络请求(将域名重定向到IP地址)等。

由于NSURLProtocol是一个抽象类,所以通常是创建一个NSURLProtocol子类,来定制我们所需要的实现。图1、2演示了一个自定义的NSURLProtocol子类的一般形式。

图1

图2
对UIWebView或者NSURLConnection请求的拦截,我们可以在程序启动时注册自定义的NSURLProtocol类,如图3代码所示。

图3

而对于NSURLSession请求的拦截,可以通过NSURLSessionConfiguration对象来配置,如图4代码所示。

图4

不过目前NSURLProtocol还不支持拦截WKWebView请求,这也是UIWebView转向WKWebView的一个障碍所在。

参考

  1. URLProtocol Class Reference
  2. iOS H5容器的一些探究(二):iOS下的黑魔法NSURLProtocol
  3. NSURLProtocol Tutorial

posted on 2016-11-12 12:42  王小航  阅读(217)  评论(0编辑  收藏  举报

导航