2016-04-09 2 views
11

come è possibile recuperare le intestazioni di risposta per una richiesta? Di seguito è una richiesta che faccio.Come recuperare l'intestazione di risposta Alamofire per una richiesta

Alamofire.request(.GET, requestUrl, parameters:parameters, headers: headers) 
     .responseJSON { response in switch response.result { 
     case .Success(let JSON): 

      ... 

     case .Failure(let error): 

      ... 

    } 

Grazie in anticipo!

risposta

23

Se la risposta è il tipo di NSHTTPURLResponse è possibile ottenere l'intestazione da response.allHeaderFields.

Così, quando si utilizza Alamofire responseJSON è possibile accedere alla proprietà NSHTTPURLResponse in questo modo:

Alamofire.request(.GET, requestUrl, parameters:parameters, headers: headers).responseJSON { 
     response in 
     print(response.response?.allHeaderFields) 
} 

la documentazione Apple dice:

un dizionario contenente tutti i campi di intestazione HTTP ricevuto come parte del risposta del server. Esaminando questo dizionario i client possono vedere le informazioni di intestazione "raw" restituite dal server HTTP.

Le chiavi in ​​questo dizionario sono i nomi dei campi di intestazione, come ricevuti dal server. Vedi RFC 2616 per un elenco di campi di intestazione HTTP comunemente usati.

Quindi, per ottenere ad esempio un tipo di contenuto in intestazione di risposta è possibile accedere in questo modo:

if let contentType = response.response?.allHeaderFields["Content-Type"] as? String { 
     // use contentType here 
} 
+0

io non sono in grado di lanciare il Content-Type come il tuo codice di ... avere qualcosa è cambiato? – Starlord