2017-02-08 3 views
4

私はこのようなノード石鹸モジュールを使用しよう:ノード・ソープでは、生成されたXML 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サービスに送信されるように見えるようにしたいと思います。 another SO answerでsuggestesた

require('request').debug = true 

...:

は、私はすでに、この1を試してみました。

しかし、出力はその有用ではありません。

[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であるのだろうと思っています。

このデバッグ出力は正常に見えますか、または作成されたXML要求を見る別の方法がありますか?

答えて

8

私はdocumentationのこのビットを見落とし:

クライアント。 lastRequest - あなたはWebサービス呼び出しのコールバックの中にこれをログに記録することができます

をロギングクライアントの最後の完全な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); 
     console.log('last request: ', client.lastRequest) // <-- here 
    }); 
}); 

生成されたXMLリクエストが出力されます。

関連する問題