我尝试使用这样的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);
});
});
现在我收到来自网络服务的“无效格式”回复。为了调试这个,我非常想看看发送到webservice的实际XML是什么样的。
我已经尝试过这个:
require('request').debug = true
...这是another SO answer中的建议。
但输出效果不大:
[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] }
我没有在那里看到我的“ValidateCustomerRequest”,而body也是null。另外我想知道为什么方法是GET,不应该是POST吗?
此调试输出看起来是否正常和/或是否有其他方法可以查看创建的XML请求?
答案 0 :(得分:18)
我忽略了documentation:
的这一点客户端。 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
});
});
这将输出生成的XML请求。