node.js - 如何在 nodejs 中以 XML 格式显示 SOAP 信封?
问题描述
我有一个使用 nodejs 工作的简单 SOAP 服务,但我无法弄清楚如何构建我的项目所需的正确信封结构。
有没有办法以 XML 格式显示发送到服务器的 SOAP 信封?
我也试过 forceSoap12Headers:true` 但它没有在我的服务器中调用 v12 方法。这里的任何提示都会很棒。
服务器
"use strict";
var soap = require('soap');
var http = require('http');
var myService = {
ACME: {
ACMESoap: {
CalcFee: function(args, callback) {
callback({
"ns1:barcodeReceive": args.cardNumber,
"ns1:requestId": args.requestId,
"ns1:calculatedFee": 0.15
});
},
LoadCard: function(args, callback) {
callback({
"ns1:barcodeReceived": args.cardNumber,
"ns1:requestId": args.requestId,
"ns1:transactionAmount": '100.00',
"ns1:currency": 'EUR'
});
}
},
ACMESoap12: {
CalcFee: function(args, callback) {
callback({
"ns1:barcodeReceived": args.cardNumber,
"ns1:calculatedFee": 0.15
});
},
LoadCard: function(args, callback) {
callback({
"ns1:barcodeReceived": args.cardNumber,
"ns1:transactionAmount": '100.00',
"ns1:currency": 'EUR'
});
}
}
}
};
var port = 7777;
var xml = require('fs').readFileSync('ACMEService.wsdl','utf8');
var server = http.createServer(function(request,response) {
response.end("404: Not Found: " + request.url);
});
console.log('Started server on port ' + port);
server.listen(port);
soap.listen(server,'/wsdl',myService, xml);
客户
"use strict";
console.log('Started Client...');
const util = require('util')
var soap = require('soap');
var url = 'http://ACME.net:7777/wsdl?wsdl';
var args = {
requestId: '2833007',
cardNumber: '3452345234'
};
var args2 = {
requestId: '2833008',
cardNumber: '56345634563'
};
var options = {
forceSoap12Headers: true
};
soap.createClient(url, options, function(err,client) {
client.CalcFee(args,function(err, result, rawResponse) {
console.log(rawResponse);
// console.log(client.describe());
});
client.LoadCard(args2,function(err,result, rawResponse) {
console.log(rawResponse);
});
});
解决方案
我发现我可以将请求发送回客户端进行显示。
服务器
...
callback({
"tns:RECEIVED_ENVELOPE": args
});
...
推荐阅读
- http - Libcurl 分块 http 消息收到回调
- python - Skikit 学习多元回归模型
- javascript - Javascript 和 Jquery 代码未加载到 Safari 9 或更低版本
- angular - Angular 5 从共享数据更新变量
- postgresql - Postgres 触发器不起作用
- arrays - numpy/python 中的简短模拟
- java - Lucene以相同的顺序存储和检索数组
- java - 强制 Maven 命令行参数
- java - java.lang.NullPointerException 制作我的应用程序
- php - HHVM FastCGI 无法正常工作 - 无响应