永久设置alamofire cookie

时间:2018-11-11 12:26:59

标签: 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)
        }
    }
}

但是,即使我终止了该应用程序,也无法获取数据。

1 个答案:

答案 0 :(得分:0)

尝试像这样将Cookie保存在UserDefaults中:

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