У меня есть приложение, которое аутентифицируется на веб-сайте без какого-либо API, просто на страницу входа, а затем сохраняю куки для следующих запросов.
Проблема в том, что происходит, когда сеанс или файлы cookie истекли, веб-сайт перенаправляет на / логин с HTTP 200. (У меня нет доступа к веб-сайту.)
Я использую библиотеку Alamofire, она включает «Адаптацию и повторные запросы» и хороша для таких вещей, как OAuth, но не для моего случая, потому что RequestRetrier вызывается только для некоторых кодов ошибок HTTP, и я всегда получаю OK 200.
Я могу только перехватить URL перенаправления, и если он содержит "/ login", то я знаю, что сессия истекла.
Я пытался использовать taskWillPerformHTTPRedirection примерно так
delegate.taskWillPerformHTTPRedirection = { session, task, response, request in
var f_request = request
if (request.url!.absoluteString.contains("login.jsp")) {
loginAgain(){
// After successfully login return the original request.
f_request = task.originalRequest
}
return f_request
}
Но, конечно, запрос на вход в систему является асинхронным вызовом, поэтому вход в систему выполняется после исходного запроса.
Как мне это сделать? Синхронный вход в систему? я скучаю по Аламофиру?