我尝试使用 NSURLProtocol 记录 Swift 2.3 项目中的所有请求。然而,并非所有 URL 请求都会被记录。具体来说,所有 Alamofire 请求都不会被记录。
示例代码
class AppDelegate: NSObject, NSApplicationDelegate{
func applicationDidFinishLaunching(aNotification: NSNotification) {
NSURLProtocol.registerClass(TestURLProtocol)
Alamofire.request(.GET, SomeURL).responseSwiftyJSON({ (request, response, json, error) in })
}
}
class TestURLProtocol: NSURLProtocol {
override class func canInitWithRequest(request: NSURLRequest) -> Bool {
print("request \(request.URL!)") // never called
return false
}
}
最佳答案
我认为这是因为 Alamofire 使用新的 URLSession
API,它不受 NSURLProtocol.registerProtocol
调用的影响。
您必须使用 URLSessionConfiguration
创建一个 URLSession
,并将其 protocolClasses
数组设置为 [TestURLProtocol.self]
。
但是这样你就必须在任何地方使用自定义的 SessionManager
来记录请求,而不是使用隐式的 Alamofire.request
我认为。
关于Swift - 记录 mac 应用程序中的所有请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42166263/