У меня есть подкласс HTTPCookiesStorage, но storeCookies () никогда не хранит файлы cookie, хотя я вызываю super.storeCookies () внутри метода.
Сеанс автоматически сохраняет файлы cookie, если я не переопределяю конфигурацию с помощью своего пользовательского объекта httpCookiesSession. Я как бы потерялся здесь.
Это вызов URLSession
var configration = URLSessionConfiguration.default
//configration.httpCookieStorage = customHTTPCookiesStorage()
let session = URLSession.init(configuration: configration)
if let url = URL.init(string: "https://google.com"){
session.dataTask(with: url) { sip,sap,su in
print(sip,sap,su)
var x = session.configuration.httpCookieStorage?.cookies
}.resume()
}
Это кастомный класс
class customHTTPCookiesStorage: HTTPCookieStorage {
override func storeCookies(_ cookies: [HTTPCookie], for task: URLSessionTask) {
super.storeCookies(cookies, for: task)
for cookies in cookies{
session?.session.configuration.httpCookieStorage?.setCookie(cookies)
}
print("This is where cookies are stored")
}
}
Обновление 1 Моя цель - не хранить файлы cookie в httpcookiesstore, когда статус ответа Http в 401
поэтому файлы cookie доступны в переменной cookie. если я поставлю точку останова. но никогда не сохраняется автоматически. Я уверен, что цикл for, который я написал, не требуется, но даже после успешных итераций цикла for httpcookiesstorage пуст, мне было интересно, переопределяю ли я правильные методы и есть ли другой элегантный способ сделать это. Я просто не хочу хранить файлы cookie, когда код состояния в 401.
Почему configration.httpCookieStorage = customHTTPCookiesStorage() закомментирован?
Я прокомментировал это, чтобы проверить, сохраняются ли файлы cookie в противном случае. и они были. Я могу загрузить проект в какое-нибудь публичное репо, если вы хотите это проверить?
Любое решение этой проблемы? Столкнувшись с той же проблемой, @HunbleDhillon





А что произойдет, если вы установите точку останова в строке, вызывающей
super.storeCookies(...)?