Как я могу отобразить конверт SOAP в формате XML в nodejs? - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть простая SOAP-служба, работающая с использованием nodejs, но у меня возникают проблемы с выяснением того, как построить правильную структуру конверта, которая требуется для моего проекта.

Есть ли способ отобразить конверт SOAP в XMLформат, который отправляется на сервер?

Я также пробовал 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);
      });
    });

1 Ответ

0 голосов
/ 14 ноября 2018

Я понял, что могу отправить запрос обратно клиенту для отображения.

SERVER

...
callback({
    "tns:RECEIVED_ENVELOPE": args
});
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...