用于PUT方法的Alamofire Content-Type application / json

时间:2016-07-25 11:04:23

标签: ios json swift alamofire

我现在正在寻找在Alamofire Content-Type application / json中为PUT方法添加content-type: application/json的解决方案。我发展如下,但工作不正常。

        Alamofire.request(.PUT, Config.preferenceURL, parameters: param, headers: headers)
            .validate(contentType: ["application/json"])
            .responseJSON { response in
                let swiftyJsonVar = JSON(response.result.value!)
                print(swiftyJsonVar)
                if (swiftyJsonVar["success"]) {

                }

                JHProgressHUD.sharedHUD.hide()
        }

2 个答案:

答案 0 :(得分:1)

您需要在encoding: .JSON方法中指定request。否则,它会将您的参数编码为URL中的查询参数。使用.JSON编码,系统会自动为您设置Content-Type标题。

Alamofire.request(.PUT, Config.preferenceURL, parameters: param, encoding: .JSON, headers: headers)

您还可以使用debugPrint API打印与您要发送到服务器的请求相当的cURL命令。

let request = Alamofire.request(.PUT, Config.preferenceURL, parameters: param, encoding: .JSON, headers: headers)
debugPrint(request)

干杯。

答案 1 :(得分:0)

添加content-type: application/json如下所示: -

let URL = NSURL(string: "https://httpbin.org/post")!
let mutableURLRequest = NSMutableURLRequest(URL: URL)
mutableURLRequest.HTTPMethod = "POST"

let parameters = ["foo": "bar"]

do {
    mutableURLRequest.HTTPBody = try NSJSONSerialization.dataWithJSONObject(parameters, options: NSJSONWritingOptions())
} catch {
    // No-op
}

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

Alamofire.request(mutableURLRequest)

More detail here