在node-soap中,如何查看/调试生成的XML SOAP请求?

ush*_*189 9 soap node.js

我尝试使用node-soap模块,如下所示:

const soap = require('soap');

soap.createClient('some-wsdl-url', function(err, client) {
    const args = {
        'ValidateCustomerRequest': {
            'memberNumber': 12345
        }
    };

    client.ValidateCustomer(args, function(err, result) {
        console.log(result);
    });
});
Run Code Online (Sandbox Code Playgroud)

现在我收到了来自webservice的"无效格式"响应.为了调试这个,我非常想看看发送到webservice的实际XML是什么样的.

我已经尝试过这个:

require('request').debug = true
Run Code Online (Sandbox Code Playgroud)

......在另一个SO答案中提出了建议.

但输出没有帮助:

[ERROR] REQUEST { uri:
  Url { ... },
  method: 'GET',
  headers:
   { 'User-Agent': 'node-soap/0.18.0',
     Accept: 'text/html,application/xhtml+xml,application/xml,text/xml;q=0.9,*/*;q=0.8',
     'Accept-Encoding': 'none',
     'Accept-Charset': 'utf-8',
     Connection: 'close',
     Host: 'xxx' },
  followAllRedirects: true,
  body: null,
  callback: [Function] }
Run Code Online (Sandbox Code Playgroud)

我没有在那里看到我的"ValidateCustomerRequest"并且body是null.另外我想知道为什么方法是GET,不应该是POST吗?

那么这个调试输出看起来是否正常和/或是否有另一种方法来查看创建的XML请求?

ush*_*189 22

我忽略了这一点文档:

客户.lastRequest - 包含客户端日志记录的上一个完整soap请求的属性

您可以在webservice调用的回调中记录它.所以上面的代码将如下所示:

const soap = require('soap');

soap.createClient('some-wsdl-url', function(err, client) {
    const args = {
        'ValidateCustomerRequest': {
            'memberNumber': 12345
        }
    };

    client.ValidateCustomer(args, function(err, result) {
        console.log(result);
        console.log('last request: ', client.lastRequest) // <-- here
    });
});
Run Code Online (Sandbox Code Playgroud)

这将输出生成的XML请求.