ios - taskWillPerformHTTPRedirection 从未在 Alamofire 5 中调用

标签 ios swift alamofire

将 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/

相关文章:

ios - 快速存储临时数据的最佳实践

ios - 如何在 Swift 3.0 中将 JSON 输出设置为 UILabel ?

ios - Alamofire JSON 编码 bool 问题?

php - Alamofire 和 Codeigniter RESTful 服务器

ios - 尝试更新地址簿中的标签电话号码

ios - 如何同时翻转和旋转标签?

iOS:本地化多行字符串文字

ios - 展开可选值时意外发现 nil - 使用 ALAMOFIRE

ios - 访问全局类

ios - TableView 的单元格未显示