Как получить оригинальные запросы в Alamofire 5? - PullRequest
0 голосов
/ 20 марта 2020

Я сделал оболочку для 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?

1 Ответ

0 голосов
/ 20 марта 2020

URLRequest теперь создаются асинхронно в 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])
...