Alamofire Accept and Content-Type JSON
I ended up using 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 }}
And then just:
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)") }}
Another way to do it is to specify it for the whole session, check @David's comment above:
Alamofire.Manager.sharedInstance.session.configuration .HTTPAdditionalHeaders?.updateValue("application/json", forKey: "Accept")
Example directly from Alamofire github page:
Alamofire.request(.GET, "http://httpbin.org/get", parameters: ["foo": "bar"]) .validate(statusCode: 200..<300) .validate(contentType: ["application/json"]) .response { (_, _, _, error) in println(error) }
In your case add what you want:
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) }
Simple way to use get method with query map and response type json
var parameters: [String:Any] = [ "id": "3" ]var headers: HTTPHeaders = [ "Content-Type":"application/json", "Accept": "application/json" ]Alamofire.request(url, method: .get, parameters: parameters,encoding: URLEncoding.queryString,headers:headers).validate(statusCode: 200..<300) .responseData { response in switch response.result { case .success(let value): case .failure(let error): }