有没有办法在带有自定义配置的 NSURLSession 中使用 NSURLProtocol?
Is there a way to use NSURLProtocol in a NSURLSession with custom config?
我有一个在后台队列中运行的 NSURLSession。我正在将我的 NSURLProtocol
子类添加到 NSURLsessionConfiguration.protocolClases
但 override class func canInitWithRequest(request: NSURLRequest) -> Bool
从未被调用。
这就是我添加 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)
我有一个在后台队列中运行的 NSURLSession。我正在将我的 NSURLProtocol
子类添加到 NSURLsessionConfiguration.protocolClases
但 override class func canInitWithRequest(request: NSURLRequest) -> Bool
从未被调用。
这就是我添加 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)