How do I retrieve a cookie from a NSURLResponse in Swift?
Try to cast your NSURLResponse to a NSHTTPURLResponse and then use the property called 'allHeaderFields'. That property is a Dictionary, where you should find your Cookie.
Swift 3 update : Gives you a [HTTPCookie]
if let url = urlResponse.url,
let allHeaderFields = urlResponse.allHeaderFields as? [String : String] {
let cookies = HTTPCookie.cookies(withResponseHeaderFields: allHeaderFields, for: url)
}
// Setup a NSMutableURLRequest to your desired URL to call along with a "POST" HTTP Method
var aRequest = NSMutableURLRequest(URL: NSURL(string: "YOUR URL GOES HERE")!)
var aSession = NSURLSession.sharedSession()
aRequest.HTTPMethod = "POST"
// Pass your username and password as parameters in your HTTP Request's Body
var params = ["username" : "ENTER YOUR USERNAME" , "password" : "ENTER YOUR PASSWORD"] as Dictionary <String, String>
var err: NSError?
aRequest.HTTPBody = NSJSONSerialization.dataWithJSONObject(params, options: nil, error: &err)
// The following header fields are added so as to get a JSON response
aRequest.addValue("application/json", forHTTPHeaderField: "Content-Type")
aRequest.addValue("application/json", forHTTPHeaderField: "Accept")
// Setup a session task which sends the above request
var task = aSession.dataTaskWithRequest(aRequest, completionHandler: {data, response, error -> Void in
// Save the incoming HTTP Response
var httpResponse: NSHTTPURLResponse = response as! NSHTTPURLResponse
// Since the incoming cookies will be stored in one of the header fields in the HTTP Response, parse through the header fields to find the cookie field and save the data
let cookies = NSHTTPCookie.cookiesWithResponseHeaderFields(httpResponse.allHeaderFields, forURL: response.URL!) as! [NSHTTPCookie]
NSHTTPCookieStorage.sharedHTTPCookieStorage().setCookies(cookies as [AnyObject], forURL: response.URL!, mainDocumentURL: nil)
})
task.resume()