swift – 有没有办法在自定义配置的NSURLSession中使用NSURLProtocol?

我有一个后台队列中运行的NSURLSession.我将我的NSURLProtocol子类添加到NSURLsessionConfiguration.protocolClases但是覆盖类func canInitWithRequest(request:NSURLRequest) – >布尔永远不会被召唤.

这就是我添加NSURLProtocol的方式

let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
configuration.protocolClasses!.append(MockNetwork)
urlSession = NSURLSession(configuration: configuration,delegate: self,delegateQueue: operationQueue)

此外,我尝试使用不在后台运行的会话,但也没有工作:

let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
configuration.protocolClasses!.append(MockNetwork)
urlSession = NSURLSession(configuration: configuration)

由于这不起作用我只是尝试:

urlSession = NSURLSession.sharedSession()

并在我的AppDelegate中调用

NSURLProtocol.registerClass(MockNetwork)

这确实有用,我做错了什么?!

花了几个小时试图找出为什么这不起作用我找到了做的方法.

代替:

configuration.protocolClasses?.append(MockNetwork.self)

做:

var protocolClasses = [AnyClass]()
protocolClasses.append(MockNetwork.self)

let configuration = URLSessionConfiguration.default
configuration.protocolClasses = protocolClasses

在那之后,所有工作都有效,而不是URLProtocol.registerClass(MockNetwork.self)

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...