我尝试向 a 添加自定义NSURLProtocol
,NSURLSession
以便为某些呼叫提供测试数据,同时为所有其他呼叫提供正常的互联网连接。我需要通过添加NSURLProtocol
到会话配置来做到这一点protocolClasses
,因为会话驻留在项目中包含的库中。
出于某种原因,当我的自定义协议通过返回调用true
来接受请求时,我的设置确实提供了测试数据canInitWithRequest
,但是对于所有其他请求(当它返回时false
),仍然在protocolClasses
我的自定义协议后面的默认协议获取请求和甚至true
在canInitWithRequest
通话中返回,但他们从不将请求发送到互联网,而是在 30 秒后发送请求超时。当我从 中删除我的自定义协议时protocolClasses
,一切正常 - 当然,不再提供我的测试数据。
这是我用于安装协议的代码:
NSURLSessionConfiguration* sessionConfiguration = [NSURLSessionConfiguration ephemeralSessionConfiguration];
NSMutableArray* protocols = [NSMutableArray arrayWithArray:sessionConfiguration.protocolClasses];
[protocols insertObject:[MyProtocol class] atIndex:0];
sessionConfiguration.protocolClasses = protocols;
mySession = [NSURLSession sessionWithConfiguration:sessionConfiguration];
当我用 注册自定义协议时[NSURLProtocol registerClass:[MyProtocol class]]
,失败确实有效,但正如所写,我不能在我的项目中使用这种方法。
关于为什么这不能正常工作的任何想法?