这是我的代码。它使用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()
答案 0 :(得分:0)
是的,我同意dgatwood,我认为你遗漏的主要内容是Content-Type标题。
我只是想弄清楚这一点,看来PUT和PATCH特别关注他们的内容类型。在你的情况下,看起来你正在使用JSON,所以你可能有这样的代码:
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
你有“接受”标题,但它控制着不同的东西。试一试。