首页 > 解决方案 > 如何在 Alamofire 5 中获取原始请求?

问题描述

我为 Alamofire 做了一个包装器,它首先发出数据请求,然后打印原始的详细信息URLRequest

let dataRequest = session.request(url, method: .get, parameters: parameters)
let originalRequest = dataRequest.request
// Now print somehow the details of original request.

它在 Alamofire 4.9 上运行良好,但在最新的 5.0 版本中停止了。问题是它dataRequest.request为零。为什么这种行为发生了变化?我怎样才能访问URLRequest下面DataRequest

标签: swiftalamofire

解决方案


URLRequests 现在在 Alamofire 5 中异步创建,因此您将无法立即访问该值。根据您正在做什么,URLRequest可能会有其他解决方案。对于日志记录,我们建议使用新EventMonitor协议。您可以阅读我们的文档以了解更多信息,但添加一个简单的记录器很简单:

final class Logger: EventMonitor {
    let queue = DispatchQueue(label: ...)

    // Event called when any type of Request is resumed.
    func requestDidResume(_ request: Request) {
        print("Resuming: \(request)")
    }

    // Event called whenever a DataRequest has parsed a response.
    func request<Value>(_ request: DataRequest, didParseResponse response: DataResponse<Value, AFError>) {
        debugPrint("Finished: \(response)")
    }
}

let logger = Logger()
let session = Session(eventMonitors: [logger])

推荐阅读