2016-05-02 2 views
1

Это мой код. Он работает с POST, но не с PUT.Как добавить данные в HTTPBody с помощью метода PUT в NSURLSession?

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

Какая ошибка или поведение вы видите? «Не работает» на самом деле не дает нам многого. – Palpatim

+0

Вы можете попробовать добавить заголовок Content-Type, но в остальном ... я предполагаю, что разница на стороне сервера. – dgatwood

+0

Вы можете показать код серверной части? –

ответ

0

Да, я согласен с dgatwood, я думаю, что главное, что вам не хватает, это заголовок Content-Type.

Я просто пытался понять это, и кажется, что PUT и PATCH относятся к их типу контента. В вашем случае, похоже, что вы используете JSON, так что вы можете иметь некоторый код, как это:

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

Вы, что для «Accept» заголовок, но контролирует что-то другое. Дать ему шанс.

Смежные вопросы