Alamofire Accept and Content-Type JSON

后端 未结 5 1085
心在旅途
心在旅途 2020-12-29 09:48

I\'m trying to make a GET request with Alamofire in Swift. I need to set the following headers:

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


        
5条回答
  •  星月不相逢
    2020-12-29 10:07

    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")
    

提交回复
热议问题