我使用node-soap模块在 nodejs 中创建了一个肥皂服务器。但是我收到一个错误,表明传入的soap xml(如下所列)中存在一些问题。
<soap log: { Fault: < { faultcode: 500, < faultstring: 'Invalid XML', < detail: 'Error: Non-whitespace before first tag.\nLine: 1\nColumn: 1\nChar: -', < statusCode : 不明确的 } }
当我在谷歌中搜索时,它表明这是windows操作系统插入unicode缓冲区的BOM(字节顺序标记)的问题。大多数解决方案建议在调用 xml 解析器之前替换/删除此 BOM。
现在,当我使用 node-soap 模块时,我无法弄清楚在哪里应用此修复程序,下面是我的服务器代码。
/**
* Simple demonstration of soap service
**/
var soapService = require("./rv.js");
var xml = require('fs').readFileSync('./mmsxmlpushservicews.wsdl.xml', 'utf8');
var express = require('express');
var bodyParser = require('body-parser');
var soap = require('soap');
var app = express();
app.use(bodyParser.raw({type: function() { return true; }, limit: '5mb' }));
app.listen(8001, function(err) {
if (err) {
console.error("error:", err);
process.exit(1);
}
var server = soap.listen(app, '/smshttp/soapws', soapService, xml);
server.log = function(type, data) {
//console.log("soap log:", data);
}
console.log("service running on port 8001...");
});
- 在上面的soap服务器代码中,在soap服务器执行解析之前,是否有一个事件/回调钩子可以用来修改soap请求缓冲区?
- 如果是,我应该在哪里以及如何做?