gpt4 book ai didi

ios - 添加到 configuration.protocolClasses 的自定义 NSURLProtocol 阻止了默认 url 协议(protocol)的工作

转载 作者:行者123 更新时间:2023-12-01 16:33:08 26 4
gpt4 key购买 nike

我尝试添加自定义 NSURLProtocolNSURLSession为了为某些调用提供测试数据,同时为所有其他调用提供正常的互联网连接。我需要通过添加 NSURLProtocol 来做到这一点到 session 配置的protocolClasses ,因为 session 驻留在项目中包含的库中。

出于某种原因,当我的自定义协议(protocol)通过返回 true 接受请求时,我的设置确实提供了测试数据。对于canInitWithRequest调用,但对于所有其他请求(当它返回 false 时)仍然在 protocolClasses 中的默认协议(protocol)在我的自定义协议(protocol)后面获取请求,甚至返回 truecanInitWithRequest调用,但他们从不将请求发送到互联网 并在 30 秒后发送请求超时。当我从 protocolClasses 中删除我的自定义协议(protocol)时,一切正常——当然,只是不再提供我的测试数据。

这是我用于安装协议(protocol)的代码:

    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]] 注册自定义协议(protocol)时,失败确实有效,但正如所写,我不能在我的项目中使用这种方法。

关于为什么这不能正常工作的任何想法?

最佳答案

首先,您的代码片段中存在打印错误,应该是 protocols而不是 array多变的。 ))

我认为在自定义协议(protocol)的情况下,查看协议(protocol)客户端等是有意义的(propertyFoKey: inRequest:)
是方法startLoading (或 stopLoading )被调用?

啊,我已经重新阅读了你的问题。

如果是 [NSURLProtocol registerClass] ,自定义类,如果是最新注册的,将处理 URL 方案。
在您的情况下,似乎有另一个(无效)协议(protocol)来处理请求。

关于ios - 添加到 configuration.protocolClasses 的自定义 NSURLProtocol 阻止了默认 url 协议(protocol)的工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30640953/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com