swift - 永久设置 alamofire cookie

标签 swift cookies alamofire

我正在使用 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)
        }
    }
}

但是当我终止应用程序时,我仍然无法获取数据。

最佳答案

尝试将您的 cookie 保存在 UserDefaults 中,如下所示:

var authToken: String {
    get {
        return defaults.value(forKey: TOKEN_KEY) as! String
    }
    set {
        defaults.set(newValue, forKey: TOKEN_KEY)
    }
}

关于swift - 永久设置 alamofire cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53248751/

相关文章:

ios - 核心数据加载 Swift 后异步刷新 UITableView

php - 字符串在我的 cookie 中不起作用

cookies - 如何在 Selenium 中的 open() 之前创建 cookie

ios - Alamofire 在我的项目中不起作用

ios - 如何使用 Alamofire 多部分上传多张图片?

ios - 命令/bin/sh 失败,退出代码为 1 和嵌入式 pods 框架

swift - Xcode6 Swift 添加远程推送通知并从 PHP 发送

ios - 我应该从 iOS 上的 Realm 中删除旧表吗?

SwiftUI - 使用 'pushViewController' 时出现 fatal error

javascript - 谷歌分析是否有设置禁止未经同意的用户使用 cookie