web-dev-qa-db-fra.com

Comment définir des cookies dans Alamofire?

Comment configurer les cookies dans Alamofire de telle sorte que chaque fois que je tue l'application et que je la redémarre, le même cookie est envoyé?

4
Gaurav

Récupère les cookies de la réponse en utilisant la méthode NSHTTPCookie [cookiesWithResponseHeaderFields (_: forURL :)] 

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

Swift 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)
                    }
                }
           }
4
Krunal

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)

L'instance d'Alamofire est un singleton partagé, donc pour toutes les demandes, le cookie est défini. J'espère que cela fonctionne pour vous.

3
Jaydeep

Comme ça?

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)
    }
1
Tony
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)
        }
0
Hamed Akhlaghi