永久设置 alamofire cookie
Posted
技术标签:
【中文标题】永久设置 alamofire cookie【英文标题】:Set alamofire cookies permenantly 【发布时间】:2018-11-11 12:26:59 【问题描述】:我正在使用 Alamofire 处理我的请求,并且在其中一些请求中获得了 cookie,当我启动应用程序并使用它时一切正常,但是当我终止应用程序并重新打开时,cookie 不再存在。我搜索了很多,找到了this,但没有一个答案有帮助。 我尝试在每次请求后保存 cookie 并在发送请求之前加载它们,如下所示:
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()
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)
但是当我杀死应用程序时,我仍然无法获取数据。
【问题讨论】:
【参考方案1】:尝试像这样将您的 cookie 保存在 UserDefaults 中:
var authToken: String
get
return defaults.value(forKey: TOKEN_KEY) as! String
set
defaults.set(newValue, forKey: TOKEN_KEY)
【讨论】:
那我应该如何将它设置为我的 alamofire cookie? 只需向 Alamofire 提出共同请求,从您的服务器获取答案并将其保存到 UserDefaults 变量中。之后,您可以重新打开您的应用并将其用于您需要的所有内容。以上是关于永久设置 alamofire cookie的主要内容,如果未能解决你的问题,请参考以下文章
Alamofire 的 Session timeOutInterval 和 cachePolicy 设置未反映在 URLRequest 上
为啥 Alamofire 中 Http Headers 中的“授权”字段会自动设置?