Swift POST请求以错误的格式将body发送到node.js / express应用程序

我想从一个iOS应用程序使用Swift发送JSON对象。 一切正常,但是node.js / express后端的请求体中的主体处于aca-awkward格式,其中在Swift中分析的整个JSON对象是实际的关键字。 那么服务器上收到的是:

req.body = { '{"email":"email","password":"password"}': '' } 

我希望它是:

 { "email":"email","password":"password" } 

所以我可以通过req.body.email访问键值

我是新来的ios和nodejs之间的http通信,所以也许这是正常的,但它非常恼人。

我的IOS邮政编码是:

  let url = NSURL(string: "http://localhost:3000/users") let request = NSMutableURLRequest(URL:url!) request.HTTPMethod = "POST" var login_details: [String: AnyObject] = [ "email" : "\(self.email_field.text)", "password" : "\(self.password_field.text)" ] let valid = NSJSONSerialization.isValidJSONObject(login_details) var err: NSError? request.HTTPBody = NSJSONSerialization.dataWithJSONObject(login_details, options: nil, error: &err) let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { data, response, error in if error != nil { println("error=\(error)") return } } 

我的节点路由器模块是:

 router.post('/', function(req, res) { console.log(req.body); }); 

只有当节点知道它是正确的内容types时,节点才会自动parsingJSON请求体。 你有两个可能的解决scheme,使用一个或另一个,但不是两个,因为他们冲突。

1)客户端,更正确的国际海事组织。 设置正确的内容types。 将此添加到您的Swift代码:

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

2)服务器端。 只要自己parsing身体:

 parsedBody = JSON.parse(body) // parsedBody will now be an object