Swift Nodejs json参数问题
客户端用的Swift。服务端用Nodejs。
问题:
客户端Post接口
let parameter = ["recordFileID": recordFileID]
request.httpBody = try! JSONSerialization.data(withJSONObject: parameter, options: .withoutEscapingSlashes)
打印出参数为Optional("{\"recordFileID\":\"1c9fdb867942a1ce0c434cca7ca1e858\"}")
但是到了服务端,参数就变了格式
parameter is {
"{\"recordFileID\":\"db867942a1ce0c43\"}": ""
}
思考:
客户端尝试改变JSONSerialization.data中的options值,但是打印都差不多,应该和这个无关。
往前看客户端的请求头
request.addValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
服务端也设置了app.use(bodyParser.urlencoded({ extended: true}));
问题应该在这里。Content-Type为application/x-www-form-urlencoded,客户端想当然的把json格式丢了进去。
解决:
客户端把参数格式由json改为字符串:
let parameterString = "recordFileID=" + recordFileID!
let parameterData = parameterString.data(using: .utf8)
request.httpBody = parameterData

浙公网安备 33010602011771号