Swift 2 JSON POST请求

我有以下swift代码提交POST请求成功。

 let request = NSMutableURLRequest(URL: NSURL(string: url)!) let session = NSURLSession.sharedSession() request.HTTPMethod = "POST" request.HTTPBody = "foo=bar&baz=lee".dataUsingEncoding(NSUTF8StringEncoding) let task = session.dataTaskWithRequest(request, completionHandler: completionHandler) 

而不是像使用语法查询参数,我想使用一个字典,但是当我做到以下几点:

 let request = NSMutableURLRequest(URL: NSURL(string: url)!) let session = NSURLSession.sharedSession() request.HTTPMethod = "POST" request.HTTPBody = try! NSJSONSerialization.dataWithJSONObject(["foo":"bar", "lee":"baz"], options: []) let task = session.dataTaskWithRequest(request, completionHandler: completionHandler) 

(就像我所看到的一样),它似乎提交的请求,如果身体是空的。

我的主要问题是:这些语法如何不同,以及由此产生的请求如何不同?

注意 :来自JS,我正在JavaScript环境(jquery.com的控制台)中testing端点,如下所示,它正在成功工作:

 $.ajax({ url: url, method: 'POST', data: { foo: 'bar', baz: 'lee' } }); 

什么@mrkbxt说。 这不是语法如何不同的问题,而是关于您的请求发送的不同数据types的问题。 UTF8string编码的文本是NSMutableURLRequest内容types的默认值,这就是您的第一个请求工作的原因。 要在正文中使用JSON,您必须将内容types切换为使用JSON。

将以下内容添加到您的请求对象,以便它接受JSON:

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