web-dev-qa-db-fra.com

Comment récupérer l'en-tête de réponse Alamofire pour une demande

comment récupérer des en-têtes de réponse pour une demande? Voici une demande que je fais.

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

            ...

        case .Failure(let error):

            ...

    }

Merci d'avance!

18
qbo

Si la réponse est de type NSHTTPURLResponse, vous pouvez obtenir l'en-tête de response.allHeaderFields.

Ainsi, lorsque vous utilisez Alamofire responseJSON, vous pouvez accéder à la propriété NSHTTPURLResponse comme ceci:

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

Comme Apple dit:

Un dictionnaire contenant tous les champs d'en-tête HTTP reçus dans le cadre de la réponse du serveur. En examinant ce dictionnaire, les clients peuvent voir les informations d'en-tête "brutes" renvoyées par le serveur HTTP.

Les clés de ce dictionnaire sont les noms des champs d'en-tête, tels qu'ils ont été reçus du serveur. Voir RFC 2616 pour une liste des champs d'en-tête HTTP couramment utilisés.

Ainsi, pour obtenir par exemple un type de contenu dans l'en-tête de réponse, vous pouvez y accéder de cette manière:

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