iOS中的NSURLProtocol
转自:iOS知识小集
NSURLProtocol类(注意,这个不是协议)经常用于实现一些URL Loading System相关的黑魔法。它可以拦截URL Loading System相关的网络请求,如UIWebView,NSURLSession、MPMoviePlayer等,以自定义一些操作,如自定义网络请求的响应、缓存、重定向网络请求(将域名重定向到IP地址)等。
由于NSURLProtocol是一个抽象类,所以通常是创建一个NSURLProtocol子类,来定制我们所需要的实现。图1、2演示了一个自定义的NSURLProtocol子类的一般形式。
对UIWebView或者NSURLConnection请求的拦截,我们可以在程序启动时注册自定义的NSURLProtocol类,如图3代码所示。
而对于NSURLSession请求的拦截,可以通过NSURLSessionConfiguration对象来配置,如图4代码所示。
不过目前NSURLProtocol还不支持拦截WKWebView请求,这也是UIWebView转向WKWebView的一个障碍所在。
参考