我有一个通过this tutorial实现的自定义NSURLProtocol
class
。除了名称,数据模型等外,我的实现与本教程中的实现几乎相同。
本质上,我正在尝试发送HTTP
请求,但不是以“http://”开头的URL
,它需要以“bla://”开头
现在,我试图注册protocol
class
并通过AFNetworking
framework
使用它,但遇到了一些麻烦。canInitWithRequest:
方法在某个时候开始返回NO,并且此时请求失败,并且我不断收到“不受支持的URL”错误。
除了注册protocol
class
之外,我还尝试通过在AFHTTPSessionManager
方法中调用该类来将类添加到protocolClasses
的didFinishLaunchingWithOptions
中:
[NSURLProtocol registerClass:[MyURLProtocol class]];
NSMutableArray *protocolsArray = [NSMutableArray arrayWithArray:[AFHTTPSessionManager manager].session.configuration.protocolClasses];
[protocolsArray addObject:[MyURLProtocol class]];
[AFHTTPSessionManager manager].session.configuration.protocolClasses = [protocolsArray copy];
而且我还将url方案添加到了应用程序的info.plist中的URL Schemes字段中。
还是没有运气...
我正在尝试做的事情甚至有可能吗?如果是这样,我可能会错过什么?
谢谢
最佳答案
因此,对于其他寻找有关此信息的人:
除了AFURLSessionManager
不使用标准NSURLProtocol
注册外,它还处理数组First-In-First-Out,而不是像NSURLProtocol
那样的Last-In-First-Out。
意思是,如果您想覆盖AFURLSessionManager
的行为(例如出于测试目的),则不能仅将NSURLProtocol
子类添加到session.configuration.protocolClasses
,而必须将其添加到数组的开头(或至少添加到数组的前面)。您正在改写/修改的行为)。
关于ios - iOS-将AFNetworking与自定义NSURLProtocol类一起使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28148496/