您如何访问 Alamofire 5 didCompleteTaskNotification 通知中的响应数据?

Posted

技术标签:

【中文标题】您如何访问 Alamofire 5 didCompleteTaskNotification 通知中的响应数据?【英文标题】:How do you access response data in Alamofire 5 didCompleteTaskNotification notification? 【发布时间】:2020-02-29 09:22:56 【问题描述】:

我刚刚完成了从 Alamofire 4 到 5 的升级。除了记录调试响应之外,一切都很好。在 Alamofire 4 中,您可以访问响应数据。

NotificationCenter.default.addObserver(forName: NSNotification.Name.Task.DidComplete, object: nil, queue: OperationQueue.main)  notification in
    if let responseData = notification.userInfo?[Notification.Key.ResponseData] as? Data 
        if responseData.count > 0 
            let body = String(decoding: responseData, as: UTF8.self)
            print("Response Body: \(body)")
        
    

在 Almaofire 5 中,您似乎无权访问响应数据。 userInfo 中唯一的内容是通过 notification.request 访问的 Alamofire.Request。

NotificationCenter.default.addObserver(forName: Request.didCompleteTaskNotification, object: nil, queue: OperationQueue.main)  notification in
    // no response data here

有人知道如何访问响应数据吗?

【问题讨论】:

【参考方案1】:

您可以从与通知关联的Request 中获取Data

guard let request = notification.request as? DataRequest else  return 

// Do something with request.data

但是,我建议转换到我们的 EventMonitor 协议进行日志记录,因为它可以让您访问更多事件。你可以在our documentation阅读更多内容。

【讨论】:

以上是关于您如何访问 Alamofire 5 didCompleteTaskNotification 通知中的响应数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 alamofire 中使用自定义动词?

您如何使用 Alamofire 测试证书固定?

如何使用 Alamofire(或 NSUrlSession)使调试日志静音?

如何在响应闭包中访问 Alamofire 请求参数?

如何使用 Alamofire 和 SwiftyJSON 访问嵌套的 JSON 值?

Alamofire 5 继承“DataRequest”