Мне известно о этом и этом подобных вопросах, я не смог найти там ничего, что решило бы мою проблему.
СПЕЦ: *Сервер 1008 *, размещенный на heroku, написанный на JS для узла, использующий модули узла-soap и body-parser, взаимодействующий с Quickbooks Web Connector в качестве веб-службы.
Я регистрирую сообщения мыльного серверапоскольку он отвечает на запросы клиентов мыла (из Quickbooks Web Connector), и они выглядят так:
soap server received...
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><authenticate xmlns="http://developer.intuit.com/"><strUserName>******</strUserName><strPassword>******</strPassword></authenticate></soap:Body></soap:Envelope>
soap server error...
TypeError: Cannot read property 'description' of undefined
at SAXParser.p.onopentag (/app/node_modules/soap/lib/wsdl/index.js:241:37)
at emit (/app/node_modules/sax/lib/sax.js:624:35)
at emitNode (/app/node_modules/sax/lib/sax.js:629:5)
at openTag (/app/node_modules/sax/lib/sax.js:825:5)
at SAXParser.write (/app/node_modules/sax/lib/sax.js:1391:13)
at WSDL.xmlToObject (/app/node_modules/soap/lib/wsdl/index.js:446:11)
at Server._process (/app/node_modules/soap/lib/server.js:240:29)
at Server._processRequestXml (/app/node_modules/soap/lib/server.js:162:18)
at IncomingMessage.<anonymous> (/app/node_modules/soap/lib/server.js:230:25)
at IncomingMessage.emit (events.js:215:7)
at endReadableNT (_stream_readable.js:1183:12)
at processTicksAndRejections (internal/process/task_queues.js:80:21)
Из журналов я думаю, что сервер мыла не может проанализировать запрос из запроса POSTтело правильно, хотя я следовал примеру readme, как этот, чтобы использовать bodyparser.raw()
перед подключением сервера мыла:
//for qb post requests, use raw for node-soap library
app.use(bodyparser.raw({
type: function() {
return true
},
limit: '5mb'
}))
var soap_server = soap.listen(app, '/', soap_service, soap_wsdl, function() {
console.log('SOAP server initialized')
})
Кто-нибудь знает решение?