如何在alamofire中设置Cookies?

如何在Alamofire中设置Cookie, 以便每当我杀死应用程序并重新启动它时,都会发送相同的cookie?

使用NSHTTPCookie [cookiesWithResponseHeaderFields(_:forURL :)]方法从响应中获取cookie。

 // setCookies func setCookies(cookies: NSHTTPCookie){ Alamofire.Manager.sharedInstance.session.configuration.HTTPCookieStorage?.setCookies(cookies, forURL: response.URL!, mainDocumentURL: nil) } // getCookies func getCookies() { let parameters: [String: AnyObject] = [:] Alamofire.request(.POST, "http://test.com/test", parameters: parameters).responseJSON { response in if let header = response.response?.allHeaderFields as? [String: String], URL = response.request?.URL { let cookies = NSHTTPCookie.cookiesWithResponseHeaderFields(header, forURL: URL) print(cookies) } } } 

斯威夫特3:

 func setCookies(cookies: HTTPCookie){ Alamofire.SessionManager.default.session.configuration.httpCookieStorage?.setCookies(cookies, forURL: URL, mainDocumentURL: nil) } Alamofire.request(url, method: HTTPMethod.post, parameters: parameters).responseData { (responseObject) -> Void in if let resposecode = responseObject.response?.statusCode { if resposecode != 200 { // error } else { // view all cookies print(HTTPCookieStorage.shared.cookies) } } } 

Swift 3.0

 let cookies = HTTPCookie.cookies(withResponseHeaderFields: response.allHeaderFields , for: response.URL!) Alamofire.Manager.sharedInstance.session.configuration.HTTPCookieStorage?.setCookies(cookies, forURL: URL, mainDocumentURL: nil) 

Alamofire实例是共​​享单例,因此对于所有请求,cookie都已设置。 希望它对你有用。

喜欢这个?

 let httpCookie = HTTPCookie.init(properties: [HTTPCookiePropertyKey.version : "0", HTTPCookiePropertyKey.name : "MYTestID", HTTPCookiePropertyKey.value : "983724dd3dea4924b8d675b0df08b611", HTTPCookiePropertyKey.expires : "2027-05-13 09:21:23 +0000"]) if let cookie = httpCookie { HTTPCookieStorage.shared.setCookie(cookie) } 
 if let fields = response.response?.allHeaderFields as? [String : String]{ let cookies = HTTPCookie.cookies(withResponseHeaderFields: fields, for: (response.request?.url!)!) HTTPCookieStorage.shared.setCookies(cookies, for: (response.request?.url!)!, mainDocumentURL: nil) }