2016-05-02 1 views
1

これは私のコードです。 POSTでは動作しますが、PUTで​​は動作しません。NSURLSessionにPUTメソッドを使ってHTTPBodyにデータを追加するには?

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はコンテンツの種類によって異なります。

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

あなたは、ヘッダーを「受け入れる」、それは別の何かを制御のためのことを持っている:あなたのケースでは、あなたがこのようないくつかのコードを持っているかもしれないので、あなたは、JSONを使用しているように見えます。試してみます。

関連する問題