私はこのような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);
});
});
これで、Webサービスから「無効な形式」の応答が返されます。これをデバッグするために、実際のXMLがWebサービスに送信される様子を確認したいと思います。
私はすでにこれを試しました:
require('request').debug = true
...これは 別の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] }
そこに「ValidateCustomerRequest」が表示されず、本文がnullです。また、なぜメソッドがGETなのか疑問に思っていますが、POSTではないでしょうか。
それで、このデバッグ出力は正常に見えますか、および/または作成されたXML要求を確認する別の方法はありますか?
ドキュメント のこのビットを見落としました:
Client。lastRequest-クライアントロギングの最後の完全なSOAPリクエストを含むプロパティ
これは、Webサービス呼び出しのコールバック内でログに記録できます。したがって、上記のコードは次のようになります。
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要求が出力されます。