gpt4 book ai didi

ios - taskWillPerformHTTPRedirection 从未在 Alamofire 5 中调用

转载 作者:行者123 更新时间:2023-12-01 18:35:05 25 4
gpt4 key购买 nike

将 Alamofire 更新到 5.0.4。正如标题所说 taskWillPerformHTTPRedirection永远不会被调用。

在 Alamofire 4.x 中,我们可以这样做:

  let sessionDelegate =  request.session.delegate as! Alamofire.SessionDelegate

sessionDelegate.taskWillPerformHTTPRedirection = { session, task, response, request in
if let url = task.currentRequest?.url {
// look at redirected url & act accordingly
}
}
}

请求的 session /委托(delegate)已在 Alamofire 5 中进行了大修,不再可以从请求中直接访问。更具体地说, taskWillPerformHTTPRedirectionClosureEventMonitor 上的关闭回调.作为健全性检查,我使用其他一些闭包回调进行了测试......并且它们起作用了。
// ClosureEventMonitor

let monitor = ClosureEventMonitor()
monitor.requestDidCreateTask = { request, task in
// Event fires
}

let monitor2 = ClosureEventMonitor()
monitor2.taskWillPerformHTTPRedirection = { sess, task, resp, req in
// Event Never fires
}

monitor2.requestDidFinish = { request in
// Event Fires
}

// Set up Session
var session: Session? = Session(startRequestsImmediately: false, eventMonitors: [monitor, monitor2])

let url = URL(string: "https://google.com")!
let urlRequest = URLRequest(url: url)

let trequest = session?.request(urlRequest)

作为引用,这段代码是从我的 AppDelegate 中触发的。 func application(_ application: UIApplication, continue userActivity: NSUserActivity用于处理深层/通用链接。

我不确定我在这里缺少什么。任何帮助是极大的赞赏。感谢您的时间。

最佳答案

这里有三件事:

一、session?.request(urlRequest)永远不会真正提出请求,因为您从不调用 resume() (或附加响应处理程序)。

二、使用一关Session不推荐这样。尽快Session超出范围所有请求将被取消。

三、EventMonitor s 不能与请求管道交互,它们只是观察性的。相反,使用 Alamofire 5 的新 RedirectHandler协议(protocol)或 Redirector类型来处理重定向。 our documentation 中还有更多内容.自定义执行的操作的简单实现是:

let redirector = Redirector(behavior: .modify { task, request, response in
// Customize behavior.
})
session?.request(urlRequest).redirect(using: redirector)

关于ios - taskWillPerformHTTPRedirection 从未在 Alamofire 5 中调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60821388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com