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

 

posted @ 2020-09-08 10:33  zhousen05  阅读(103)  评论(0)    收藏  举报