NSURLProtocol的使用
来源:互联网 发布:windows任务栏不见了 编辑:程序博客网 时间:2024/04/20 18:02
NSURLProtocol的使用
NSURLProtocol可以拦截所有由URL Loading System发起的请求,可用于实现以下功能:
- 重定向网络请求,实现代理等功能
- 实现网络缓存
- 全局设置网络请求
- 自定义网络请求返回结果
具体的实现步骤如下:
第一步 创建NSURLProtocol的子类,重写以下方法
+ (BOOL)canInitWithRequest:(NSURLRequest *)request
这个方法用来返回是否需要处理这个请求,如果需要处理,返回YES,否则返回NO。在该方法中可以对不需要处理的请求进行过滤。
+ (NSURLRequest *)canonicalRequestForRequest:(NSURLRequest *)request
重写该方法,可以对请求进行修改,例如添加新的头部信息,修改,修改url等,返回修改后的请求。
+ (BOOL)requestIsCacheEquivalent:(NSURLRequest *)a toRequest:(NSURLRequest *)b
该方法主要用来判断两个请求是否是同一个请求,如果是,则可以使用缓存数据,通常只需要调用父类的实现即可
- (void)startLoading
重写该方法,需要在该方法中发起一个请求,对于NSURLConnection来说,就是创建一个NSURLConnection,对于NSURLSession,就是发起一个NSURLSessionTask
- (void)stopLoading
重写该方法,需要停止响应的请求
第二步 实现相应的协议代理方法,对NSURLConnection来说,要实现NSURLConnectionDataDelegate代理方法,对于NSURLSession来说,需要实现NSURLSessionTaskDelegate代理方法。在这些代理方法中,需要使用NSURLProtocolClient来通知URL Loading System。具体实现方式详见示例代码。
第三步 在合适的位置注册自定义的NSURLProtocol子类。调用[NSURLProtocol registerClass:[MyURLProtocol class]]
进行注册,调用[NSURLProtocol unregisterClass:[MyURLProtocol class]]
可以注销。注意,代码中可以注册多个NSURLProtocol子类,每个子类可以
以上就是整个实现过程,详细内容可以参见代码。
代码地址https://github.com/liujinlongxa/NSURLProtocolDemo
- NSURLProtocol的使用
- NSURLProtocol的使用
- NSURLProtocol 使用
- 使用NSURLProtocol实现UIWebView的离线缓存
- 使用NSURLProtocol实现UIWebView的离线缓存
- 使用NSURLProtocol实现UIWebView的离线缓存
- 使用NSURLProtocol实现UIWebView的离线缓存
- 使用NSURLProtocol实现UIWebView的离线缓存
- 使用NSURLProtocol实现UIWebView的离线缓存
- IOS混合编程 - NSURLProtocol 的使用 (三)
- 使用NSURLProtocol实现UIWebView的离线缓存的简单实现
- 56.使用NSURLProtocol实现UIWebView的离线缓存-转载
- nsurlprotocol的理解和使用, 含demo, nice!
- NSURLProtocol
- 使用NSURLProtocol实现离线缓存
- NSURLProtocol和NSRunLoop的那些坑
- NSURLProtocol和NSRunLoop的那些坑
- NSURLProtocol和NSRunLoop的那些坑
- HDU 5463
- Weka各类分类器的使用(Java)
- 23设计模式之命令模式(Command)
- Cordova-iOS自定义插件以及和老版本的差异
- 链表归并排序的递归与非递归实现
- NSURLProtocol的使用
- 大数据学习篇:hadoop深入浅出系列之HDFS(一)——HDFS简介和优缺点
- 潘鹏整理WPF(4)工具提示ToolTip&&Popup
- 不含数据库的登录实现
- PCB-从零开始
- 病毒查杀
- Balanced Binary Tree
- web前端开发的点点滴滴---3.CSS介绍
- JAVA中堆和栈的区别