Ios Swift POST请求以错误格式将正文发送到node.js/express应用程序
我正在尝试使用Swift从ios应用程序发送JSON对象。除了node.js/express后端上的请求主体中的主体采用aca笨拙的格式外,其他一切都可以正常工作,在这种格式中,用Swift解析的整个JSON对象就是实际的键。因此,服务器上接收到的是:Ios Swift POST请求以错误格式将正文发送到node.js/express应用程序,ios,json,node.js,swift,express,Ios,Json,Node.js,Swift,Express,我正在尝试使用Swift从ios应用程序发送JSON对象。除了node.js/express后端上的请求主体中的主体采用aca笨拙的格式外,其他一切都可以正常工作,在这种格式中,用Swift解析的整个JSON对象就是实际的键。因此,服务器上接收到的是: req.body = { '{"email":"email","password":"password"}': '' } 我希望它是: { "email":"email","password":"password" } 因此,我可以访问键值,
req.body = { '{"email":"email","password":"password"}': '' }
我希望它是:
{ "email":"email","password":"password" }
因此,我可以访问键值,例如,req.body.email
我对ios和nodejs之间的http通信还不熟悉,所以这可能是
很正常,但很烦人
我的ios http post代码是:
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);
});
节点仅当知道JSON请求体是正确的内容类型时,才会自动将其解析为对象。您有两种可能的解决方案,可以使用其中一种,但不能同时使用两种,因为它们相互冲突 1) 客户端,更正确。设置正确的内容类型。将此添加到您的Swift代码中:
request.setValue("application/json" forHTTPHeaderField:"Content-Type")
2) 服务器端。只需自己解析身体:
parsedBody = JSON.parse(body)
// parsedBody will now be an object