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