首页 > 解决方案 > 如何在 Alamofire 中的 sessionTask 恢复之前调用自定义方法

问题描述

当 Alamofire 调用 resume 以启动请求时,我需要记录一些数据/信息。(我在项目中使用了 Swift)

反正没有 domethod_swizzling吗?

时间线将是这样的:

Call a request (put in request queue or execute right away) -> [custom method] -> SessionTask.resume()

我知道 Moya 做过类似的事情,叫做WillSend. 但我想知道如何在不使用 Moya 的情况下做到这一点。

谢谢你。

标签: swifthttprequestalamofirensurlsessiontask

解决方案


如果您需要做的只是检查各种请求元素,您可以使用 Alamofire 5 的EventMonitor协议,该协议在 Alamofire 发出请求时在各种生命周期事件中调用。有一个内置ClosureEventMonitor允许您为这些事件设置闭包。例如:

let monitor = ClosureEventMonitor()
monitor.requestDidCompleteTaskWithError = { (request, task, error) in
    debugPrint(request)
}
let session = Session(eventMonitors: [monitor])

请参阅我们的文档ClosureEventMonitorEventMonitor协议本身


推荐阅读