2016-01-04 6 views
5

sto cercando di impostare dei cookie nella mia richiesta HTTP e ho pensato che qui di seguito il codice avrebbe funzionato:Swift - Come impostare cookie nel NSMutableURLRequest

let request = NSMutableURLRequest(URL: url) 
request.HTTPMethod = "GET" 
request.setValue("key=value;", forHTTPHeaderField: "Cookie") 

ma questo codice non funziona. qualcuno ha idea di come impostarlo?

risposta

11

risposta Aggiornato per Swift 3

Si vuole guardare HTTPCookieStorage.

// First 
let jar = HTTPCookieStorage.shared 
let cookieHeaderField = ["Set-Cookie": "key=value"] // Or ["Set-Cookie": "key=value, key2=value2"] for multiple cookies 
let cookies = HTTPCookie.cookies(withResponseHeaderFields: cookieHeaderField, for: url) 
jar.setCookies(cookies, for: url, mainDocumentURL: url) 

// Then 
var request = URLRequest(url: url) 

risposta originale per SWIFT 2

Si desidera guardare NSHTTPCookieStorage.

// First 
let jar = NSHTTPCookieStorage.sharedHTTPCookieStorage() 
let cookieHeaderField = ["Set-Cookie": "key=value"] // Or ["Set-Cookie": "key=value, key2=value2"] for multiple cookies 
let cookies = NSHTTPCookie.cookiesWithResponseHeaderFields(cookieHeaderField, forURL: url) 
jar.setCookies(cookies, forURL: url, mainDocumentURL: url) 

// Then 
let request = NSMutableURLRequest(URL: url) 
+0

Funziona! Ho cercato questa risposta giusta così da fare ... – Josh

1

Ecco come funziona in 3.x Swift dopo aver impostato dei cookie utilizzando HTTPCookieStorage

let cookies=HTTPCookieStorage.shared.cookies(for: URL(string: cookieURL)!) 
let headers=HTTPCookie.requestHeaderFields(with: cookies!) 
let request = NSMutableURLRequest(url: requestURL!) 
request.allHTTPHeaderFields=headers