我有一个通过this tutorial实现的自定义NSURLProtocol class。除了名称,数据模型等外,我的实现与本教程中的实现几乎相同。

本质上,我正在尝试发送HTTP请求,但不是以“http://”开头的URL,它需要以“bla://”开头

现在,我试图注册protocol class并通过AFNetworking framework使用它,但遇到了一些麻烦。
canInitWithRequest:方法在某个时候开始返回NO,并且此时请求失败,并且我不断收到“不受支持的URL”错误。

除了注册protocol class之外,我还尝试通过在AFHTTPSessionManager方法中调用该类来将类添加到protocolClassesdidFinishLaunchingWithOptions中:

[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/

10-09 22:56