swift - 如何在 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
?
解决方案
URLRequest
s 现在在 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])
推荐阅读
- r - 如何将两个变量的特定值组合成一个新变量(?)
- python - 纠正格式错误的 JSON
- javascript - 删除数组内的内部数组的一项 - 反应原生
- react-native - 反应本机导航 Wix Navigation.pop 可能的未处理承诺拒绝(id:0):错误:无法执行堆栈命令
- javascript - Tilemap图层不与玩家碰撞
- chaquopy - 使用 chaquopy 4.0.0 将字符串写入特定目录
- python - Azure 函数 Python - 错误“未注册绑定类型‘blobTrigger’”
- dialogflow-es - Dialogflow 例程建议 - 触发从代理添加新例程
- jquery - 表单提交完成时如何隐藏加载器
- upload - 如何从我的个人气象站上传数据?