2016-11-25 14 views
2

私の英語では申し訳ありませんが、Node.jsでSOAPの使用に関する質問があります。私はnode.jsの初心者です。私は助けが必要です。これは私の関数である:レスポンスSOAP Node.jsを解析できません

var soap = require('soap'); 

var url = 'http://SOMETHING?wsdl';

var args = { 
    accountId: 'xxxxx', 
    userName: 'xxxxx', 
    password: 'xxxxxx', 
    targetNSAlias: 'tns', 
    targetNamespace: 'http://api.ilient.com/' 
}; 

soap.createClient(url, function(err, client) { 
    if(err) throw err;  
      client.login(args,function(err, result, raw, soapHeader){ 
      if(err) throw err; 
      console.log(result); 
    }); 
}); 

私はこのエラーを取得する実行すると:

Error: Cannot parse response 
at /root/node_modules/soap/lib/client.js:321:21 
at Request._callback (/root/node_modules/soap/lib/http.js:117:5) 
at Request.self.callback (/root/node_modules/request/request.js:186:22) 
at Request.emit (events.js:98:17) 
at Request.<anonymous> (/root/node_modules/request/request.js:1081:10) 
at Request.emit (events.js:95:17) 
at IncomingMessage.<anonymous> (/root/node_modules/request/request.js:1001:12) 
at IncomingMessage.g (events.js:180:16) 
at IncomingMessage.emit (events.js:117:20) 
at _stream_readable.js:944:16 

誰かが私がそれを解決するのに役立つことができますか? ありがとう、私の英語をもう一度申し訳ありません。

答えて

3

私は同様の問題に直面しました。使用しようとしているSOAP Webサービスにv1.2の仕様があり、text/xmlではなくapplication/soap + xmlのコンテンツタイプが必要な場合があります。ノード・ソープにSOAP 1.2バージョンを使用させるには、forceSoap12Headers:trueの中に追加します。createClient()パラメーター。サイドノートで

は、私が原因EndpointDispatcherエラーでAddressFilterミスマッチに WSアドレッシングため、受信機で処理することができない「」にしてメッセージのSOAPヘッダに ヘッダーを追加しなければなりませんでした。

次のように私はあなたのコードを編集した:あなたの作成したクライアントコードの後に​​client.setSecurity(new soap.BasicAuthSecurity('username', 'password'));

var soap = require('soap'); 
var url = 'http://SOMETHING?wsdl'; 
var args = { 
    accountId: 'xxxxx', 
    userName: 'xxxxx', 
    password: 'xxxxxx', 
    targetNSAlias: 'tns', 
    targetNamespace: 'http://api.ilient.com/' 
}; 

var soapOptions = { 
    forceSoap12Headers: true 
}; 

var soapHeaders = { 
    'wsa:Action': 'http://tempuri.org/MyPortName/MyAction', 
    'wsa:To': 'http://SOMETHING.svc' 
}; 

soap.createClient(url, soapOptions, function(err, client) { 
    if(err) throw err; 
    client.addSoapHeader(soapHeaders, '', 'wsa', 'http://www.w3.org/2005/08/addressing'); 
    client.login(args, function(err, result, raw){ 
     if(err) throw err; 
     console.log(result); 
    }); 
}); 
0

は、このコードを追加します。それは私のために働いた:

var soap = require('soap'); 
var url = 'http://SOMETHING?wsdl'; 
soap.createClient(url, function(err, client) { 
if(err) throw err; 
    client.setSecurity(new soap.BasicAuthSecurity('username', 'password')); 
    client.login(args, function(err, result) { 
    if(err) throw err; 
     console.log(result); 
    }); 
}); 
関連する問題