2016-01-04 10 views
5

Ich versuche Cookie zu setzen in meiner HTTP-Anforderung und ich dachte, dass unter Code funktionieren würde:Swift - Wie Cookie setzen in NSMutableURLRequest

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

aber dieser Code funktioniert nicht. hat jemand eine Idee, wie man es einstellt?

Antwort

11

aktualisiert Antwort für Swift 3

Sie wollen bei HTTPCookieStorage suchen.

// 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) 

Original-Antwort für eine schnelle 2

Sie bei NSHTTPCookieStorage suchen.

// 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

Es funktioniert! Ich habe so lange nach dieser richtigen Antwort gesucht ... – Josh

1

Hier ist, wie es in Swift 3.x funktioniert, nachdem Sie Cookie HTTPCookieStorage

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