2015-01-13 16 views
8

Sto usando Alamofire per la mia richiesta Rest (POST) e ottenere una risposta JSON senza problemi. Ma posso accedere solo al corpo della risposta. Voglio ottenere le intestazioni di risposta. Non è possibile quando usi Alamofire?Come ottenere le intestazioni di risposta quando si utilizza Alamofire in Swift?

Ecco il mio frammento di codice:

@IBAction func loginButtonPressed(sender: UIButton) { 
    let baseUrl = Globals.ApiConstants.baseUrl 
    let endPoint = Globals.ApiConstants.EndPoints.authorize 

    let parameters = [ 
     "apikey": "api_key_is_here", 
     "apipass": "api_pass_is_here", 
     "agent": "agent_is_here" 
    ] 

    Alamofire.request(.POST, baseUrl + endPoint, parameters: parameters).responseJSON { 
     (request, response, data, error) in let json = JSON(data!) 

     if let result = json["result"].bool { 
      self.lblResult.text = "result: \(result)" 
     } 
    } 
} 
+2

Non ho esperienza con Alamofire, ma non 'risposta' nella chiusura di completamento a' NS HTTPURLResponse' che ha una proprietà 'allHeaderFields'? –

risposta

24

Come risposta è di NSHTTPURLResponse tipo, si dovrebbe essere in grado di ottenere le intestazioni come segue:

response.allHeaderFields 
+1

Se la risposta è di tipo NSHTTPURLResponse, non è necessario lanciarla più ... –

+1

Sì, hai ragione. Poiché sto usando Moya, ho avuto bisogno del cast perché restituisce la risposta come NSURLResponse. Modificato la mia risposta! – Antoine

+0

Fantastico stavo cercando come farlo usando Moya, ho solo bisogno di scavare nella tua modifica :) Grazie! – VivienG

3

Ecco come accedere alle intestazioni di risposta in Swift 3:

Alamofire.request(.GET, requestUrl, parameters:parameters, headers: headers) 
    .responseJSON { response in 
    if let headers = response.response?.allHeaderFields as? [String: String]{ 
     let header = headers["token"] 
     // ... 
    } 
} 
Problemi correlati