永久设置 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 上

Alamofire5 设置请求超时时间

Alamofire5 设置请求超时时间

为啥 Alamofire 中 Http Headers 中的“授权”字段会自动设置?

使用 Alamofire 设置 HTTP Headers 和 HTTP Body

如何在 Alamofire 中将正文类型设置为 JSON?