gpt4 book ai didi

ios - 在 Alamofire (Swift) 中保存 cookie

转载 作者:IT王子 更新时间:2023-10-29 05:46:38 70 4
gpt4 key购买 nike

我想存储我的 cookie,这样当我重新打开应用程序时,我可以恢复存储在前一个实例中的那些。要初始化 alamofire,我使用:

let manager = Alamofire.Manager.sharedInstance

我加载 cookie 的代码是:

let cookies = NSHTTPCookie.cookiesWithResponseHeaderFields(headerFields, forURL: URL)
Alamofire.Manager.sharedInstance.session.configuration.HTTPCookieStorage?.setCookies(cookies, forURL: URL, mainDocumentURL: nil)

但是当我重新启动手机时,它忘记了所有的 cookie。

最佳答案

对于 Swift 3 和 Alamofire 4.4

1.在UserDefaults中添加保存cookies的方法

func saveCookies(response: DataResponse<Any>) {
let headerFields = response.response?.allHeaderFields as! [String: String]
let url = response.response?.url
let cookies = HTTPCookie.cookies(withResponseHeaderFields: headerFields, for: url!)
var cookieArray = [[HTTPCookiePropertyKey: Any]]()
for cookie in cookies {
cookieArray.append(cookie.properties!)
}
UserDefaults.standard.set(cookieArray, forKey: "savedCookies")
UserDefaults.standard.synchronize()
}

2.在Alamofire中使用saveCookies()

Alamofire.request(urlString).responseJSON { response in
saveCookies(response)
}

3.添加从UserDefaults加载cookies的方法

func loadCookies() {
guard let cookieArray = UserDefaults.standard.array(forKey: "savedCookies") as? [[HTTPCookiePropertyKey: Any]] else { return }
for cookieProperties in cookieArray {
if let cookie = HTTPCookie(properties: cookieProperties) {
HTTPCookieStorage.shared.setCookie(cookie)
}
}
}

4.在Alamofire.request()之前使用loadCookies()

关于ios - 在 Alamofire (Swift) 中保存 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35105411/

70 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com