1.原理
NSURLProtocol
是苹果为我们提供的 URL Loading System 的一部分,在每一个 HTTP 请求开始时,URL 加载系统创建一个合适的 NSURLProtocol
对象处理对应的 URL 请求,而我们需要做的就是写一个继承自 NSURLProtocol
的类,并通过 - registerClass:
方法注册我们的协议类,然后 URL 加载系统就会在请求发出时使用我们创建的协议对象对该请求进行处理。
2.流程
2.1 创建一个继承自NSURLProtocol类 MySessionURLProtocol
2.2 过滤网络请求,在 MySessionURLProtocol中实现:
#define protocolKey @"SessionProtocolKey"
/**
* 是否拦截处理指定的请求
* @param request 指定的请求
* @return 返回YES表示要拦截处理,返回NO表示不拦截处理
*/
+ (BOOL)canInitWithRequest:(NSURLRequest *)request {
/*
防止无限循环,因为一个请求在被拦截处理过程中,也会发起一个请求,这样又会走到这里,如果不进行处理,就会造成无限循环