【发布时间】:2016-01-19 02:45:40
【问题描述】:
我正在使用 express 和 bodyparser 消费一个soap请求,但是该请求在消费时没有正确格式化,即第一个等号(=)符号被转换为冒号(:),即
下面是我的代码:
var express = require("express");
var app = express();
var bodyParser = require("body-parser");
require('body-parser-xml')(bodyParser);
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.xml());
app.get('/',function(req,res){
res.send("hello");
});
app.post('/soap',function(req,res){
req.setEncoding('utf8');
var request = req.body;
console.log(request);
res.end("yes");
});
var server = app.listen(3000, function () {
var host = server.address().address
var port = server.address().port
console.log("App listening at http://%s:%s", host, port)
})
【问题讨论】:
-
xml 请求如下所示:
-
你应该阅读How to Ask。
-
客户端很可能没有使用正确的内容类型来上传 XML 数据,因此 Express 认为它是 url 编码的数据。见the fine manual。
-
我正在使用 curl: curl -d @soap.xml "localhost:3000/url"
-
另外,当我使用 postman,raw 时,它会产生类似的结果