iOS中的NSURLProtocol

转自:iOS知识小集

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

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


iOS中的NSURLProtocol_第1张图片

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

iOS中的NSURLProtocol_第2张图片

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

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

参考

URLProtocol Class Reference 

iOS H5容器的一些探究(二):iOS下的黑魔法NSURLProtocol 

NSURLProtocol Tutorial

你可能感兴趣的:(iOS中的NSURLProtocol)