簡體   English   中英

taskWillPerformHTTPRedirection 從未在 Alamofire 5 中調用

[英]taskWillPerformHTTPRedirection never called in Alamofire 5

將 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
      }
    }
  }

請求的會話/委托已在 Alamofire 5 中進行了大修,不再可以從請求中直接訪問。 更具體地講, taskWillPerformHTTPRedirection是一個封閉的回調ClosureEventMonitor 作為健全性檢查,我使用其他一些閉包回調進行了測試……並且它們起作用了。

// 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 for func application(_ application: UIApplication, continue userActivity: NSUserActivity deep/universal links 中func application(_ application: UIApplication, continue userActivity: NSUserActivity的。

我不確定我在這里錯過了什么。 任何幫助是極大的贊賞。 感謝您的時間。

這里有三件事:

首先, session?.request(urlRequest)永遠不會真正發出請求,因為您永遠不會調用resume() (或附加響應處理程序)。

其次,不建議使用像這樣的一次性Session 一旦Session超出范圍,所有請求都將被取消。

第三, EventMonitor不能與請求管道交互,它們只是觀察性的。 相反,使用 Alamofire 5 的新RedirectHandler協議或Redirector類型來處理重定向。 我們的文檔中有更多內容 自定義執行的操作的簡單實現是:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM