Alamofire Accept y Content-Type JSON

Estoy intentando hacer una request GET con Alamofire en Swift. Necesito configurar los siguientes encabezados:

Content-Type: application/json Accept: application/json 

Podría piratearlo y hacerlo directamente especificando los encabezados de la request, pero quiero hacerlo con ParameterEncoding , como se sugiere en la biblioteca. Hasta ahora tengo esto:

 Alamofire.request(.GET, url, encoding: .JSON) .validate() .responseJSON { (req, res, json, error) in if (error != nil) { NSLog("Error: \(error)") println(req) println(res) } else { NSLog("Success: \(url)") var json = JSON(json!) } } 

Content-Type está configurado, pero no Accept . ¿Cómo puedo hacer esto correctamente?

Terminé usando URLRequestConvertible https://github.com/Alamofire/Alamofire#urlrequestconvertible

 enum Router: URLRequestConvertible { static let baseUrlString = "someUrl" case Get(url: String) var URLRequest: NSMutableURLRequest { let path: String = { switch self { case .Get(let url): return "/\(url)" } }() let URL = NSURL(string: Router.baseUrlString)! let URLRequest = NSMutableURLRequest(URL: URL.URLByAppendingPathComponent(path)) // set header fields URLRequest.setValue("application/json", forHTTPHeaderField: "Content-Type") URLRequest.setValue("application/json", forHTTPHeaderField: "Accept") return URLRequest.0 } } 

Y luego solo:

 Alamofire.request(Router.Get(url: "")) .validate() .responseJSON { (req, res, json, error) in if (error != nil) { NSLog("Error: \(error)") println(req) println(res) } else { NSLog("Success") var json = JSON(json!) NSLog("\(json)") } } 

Otra forma de hacerlo es especificarlo para toda la session, marque @ el comentario de David anterior:

 Alamofire.Manager.shanetworkingInstance.session.configuration .HTTPAdditionalHeaders?.updateValue("application/json", forKey: "Accept") 

Ejemplo directamente desde la página de Alamofire github:

 Alamofire.request(.GET, "http://httpbin.org/get", parameters: ["foo": "bar"]) .validate(statusCode: 200..<300) .validate(contentType: ["application/json"]) .response { (_, _, _, error) in println(error) } 

En tu caso, agrega lo que quieras:

 Alamofire.request(.GET, "http://httpbin.org/get", parameters: ["foo": "bar"]) .validate(statusCode: 200..<300) .validate(contentType: ["application/json"]) .validate(Accept: ["application/json"]) .response { (_, _, _, error) in println(error) } 

Prueba esto:

 URLRequest.setValue("application/json", forHTTPHeaderField: "Content-Type") URLRequest.setValue("application/json", forHTTPHeaderField: "Accept")