【发布时间】:2015-06-04 10:08:08
【问题描述】:
我尝试将自定义 NSURLProtocol 添加到 NSURLSession 以便为某些呼叫提供测试数据,同时为所有其他呼叫提供正常的互联网连接。为此,我需要将NSURLProtocol 添加到会话配置的protocolClasses 中,因为会话驻留在项目中包含的库中。
由于某种原因,当我的自定义协议通过为 canInitWithRequest 调用返回 true 来接收请求时,我的设置确实提供了测试数据,但对于所有其他请求(当它返回 false)时,默认协议仍在我的自定义协议后面的protocolClasses 中获取请求,甚至在canInitWithRequest 调用上返回true,但他们从不将请求发送到互联网并在 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]] 注册自定义协议时,失败确实有效,但正如所写,我不能在我的项目中使用这种方法。
知道为什么这不能正常工作吗?
【问题讨论】:
标签: ios nsurlprotocol