如何在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
});
...

最新更新