Swift Alamofire agregar encabezado personalizado a todas las solicitudes

He intentado añadir encabezado personalizado con esto:

let manager = Manager.sharedInstance
manager.session.configuration.HTTPAdditionalHeaders = [
    "Authorization": "Token \(token)"
]

Pero no funciona, ¿qué estoy haciendo mal?

Tengo que añadir esto después de inicio de sesión, por lo que el encabezado se utiliza en todas las solicitudes.

OriginalEl autor Mirza Delic | 2015-09-24

4 Kommentare

  1. 4

    No sé donde hacerlo, pero mi AlomoFire solicitudes de aspecto :

     Alamofire.request(.GET, urlPath, parameters: parameters, headers: ["X-API-KEY": apiKey, "Content-type application":"json", "Accept application" : "json"]).responseJSON() { (req,res, data, error) in //blah blah }

    Mi conjetura es que usted puede poner su información de encabezado en que los encabezados de la matriz de

    establece encabezado por una única petición, pero Mirza Delic se le preguntó cómo establecer encabezados personalizados para el todos los de la solicitud
    la información del encabezado en que los encabezados de la matriz o un Diccionario

    OriginalEl autor Glenn

  2. 2

    Me cansé de intentar reemplazar manualmente toda la aplicación mediante la adición de encabezados a 100+ de mis peticiones. He optado por una más lazier enfoque:

    Hacer un AlamofireManagerExtension.swift y utilizar el siguiente código:

    import Foundation
    import Alamofire
    
    extension Manager {
        public func myRequest(
            method: Alamofire.Method,
            _ URLString: URLStringConvertible,
            parameters: [String: AnyObject]? = nil,
            encoding: ParameterEncoding = .URL,
            headers: [String: String]? = ["MY-STATIC-API-KEY" : "BLAHBLAHBLAH"])
            -> Request
        {
            return Manager.sharedInstance.request(
                method,
                URLString,
                parameters: parameters,
                encoding: encoding,
                headers: headers
            )
        }
    }

    A continuación, ctrl-shift-f en su proyecto de xcode, búsqueda de sharedInstance.petición o lo que sea para hacer peticiones (todos los de mi código sigue este patrón) y reemplazarlo con sharedInstance.myRequest (asegúrese de no cambiar la extensión del sharedInstance.petición) y voila:

    El mundo cambiaron encabezado personalizado para todas las solicitudes!

    Si quería añadir en claves personalizadas, por supuesto, usted puede anteponer métodos con el método replace como
    sharedInstance.solicitud(método: …) a sharedInstance.myRequest(customKeys: …, método de: …) si usted necesita las variables personalizadas.

    No es una buena solución para modificar los 100+ pedidos.

    OriginalEl autor apollow

  3. 1

    Usted no debe anexar Authorization los encabezados de esta manera. Siempre se debe anexar el uso de la headers parámetro en el request método, como se muestra por @Glenn.

    Además, si usted necesita para añadir otras cabeceras de configuración, usted necesita para crear una configuración personalizada, establecer el encabezado de valores, a continuación, crear una nueva Manager ejemplo, con la nueva configuración. Agregar encabezados a una configuración después de que ya se ha utilizado para crear una URL de los resultados de una sesión en un comportamiento indefinido dependiendo de la versión de SO que se ejecutan. Tenemos muchas pruebas en Alamofire demostrar este comportamiento diferente.

    OriginalEl autor cnoon

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea