如何在NSURLSession中使用PUT方法向HTTPBody添加数据?

时间:2016-05-02 16:48:16

标签: swift nsurlsession

这是我的代码。它使用POST但不使用PUT。

let url:NSURL = NSURL(string: urlApi)!
let session = NSURLSession.sharedSession()
let request = NSMutableURLRequest(URL: url)
request.HTTPMethod = "PUT"
request.cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringCacheData
request.addValue("a5f96d8c01000194c639d6b5f3b199eb", forHTTPHeaderField: "token")
request.addValue("application/json", forHTTPHeaderField: "Accept")

let params:[String: AnyObject] = ["id" : 296,"name" : "asdad","space_width":10,"space_height":10,"space_altitude":10,"actions":""]
request.HTTPBody = try! NSJSONSerialization.dataWithJSONObject(params, options: NSJSONWritingOptions())

let task = session.dataTaskWithRequest(request) {
    (
    let data, let response, let error) in

    guard let _:NSData = data, let _:NSURLResponse = response  where error == nil else {
        print("error")
        return
    }

    let dataString = NSString(data: data!, encoding: NSUTF8StringEncoding)
    print(dataString)
}
task.resume()

1 个答案:

答案 0 :(得分:0)

是的,我同意dgatwood,我认为你遗漏的主要内容是Content-Type标题。

我只是想弄清楚这一点,看来PUT和PATCH特别关注他们的内容类型。在你的情况下,看起来你正在使用JSON,所以你可能有这样的代码:

request.addValue("application/json", forHTTPHeaderField: "Content-Type")

你有“接受”标题,但它控制着不同的东西。试一试。

相关问题