【发布时间】:2016-04-18 21:53:55
【问题描述】:
我有以下快速代码可以成功提交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 的控制台)中测试端点,如下所示,它工作成功:
$.ajax({
url: url,
method: 'POST',
data: {
foo: 'bar',
baz: 'lee'
}
});
【问题讨论】:
-
x-www-form-urlencoded vs application/json。您尚未将 Content-Type 标头字段设置为 application/json。
-
Omfg,我实际上花了三个小时试图弄清楚这个问题......一种方法不起作用,那是因为我也忽略了这个...... -_-
标签: ios swift macos swift2 nsurlsession