2012-05-18 7 views
5

wsdlサービスを使用しようとしましたが、ノード・ソープが見つかりましたが、ヘッダーの設定方法がわかりません。node.jsのnode-soapを使用してヘッダーを設定する方法

例:私は消費しようとしていますWSDLは、ヘッダーを介したユーザ名とパスワードが必要なので、私はこれを必要と

header = { 
    "Username": "foo", 
    "Password" : "bar" 
} 

理由があります。あなたが何をしようとしていることはWS-Securityない場合は、node-soapためREADMEを通じて読む事前

+3

役に立たなかったコメントが、私たちのシニアPHPのエンジニアの一人は、私は、セットアップノード-石鹸を持っていますが、今、それはあなたのように見えるにaddChild –

+0

...「WSDLの統合は狂気である」と言うために使用されます私はそれをカスタマイズしてすぐにそれをプッシュします。しかし、私はnode.jsが石鹸でうまく動かないことを述べたいと思います。 –

答えて

1

おかげで、あなたが行っている、(私は離れてSOAPから遠く滞在ので、私は考えています)ドキュメントに応じてカスタムヘッダーを設定する方法がないので、著者に問題を提出する必要があります。

WS-Securityの場合は、on this part of the READMEの指示に従ってください。

+0

デビッド内の他の問題を持つイム –

+7

これはおそらく、SOAPは「エンタープライズ」開発で間違っていて邪悪なことから生まれた悪夢の基準だからでしょう。 –

6

まだ開いているこの質問に答えるためには、今は役に立たないかもしれませんが、ここでは行きます。

Client.addSoapHeaderメソッドを使用できます。ヘッダーノードを

オプション

SOAPHeaderオブジェクト({ルート名:{名前石鹸に SOAPHEADERを追加 - ドキュメント

Client.addSoapHeader(SOAPHEADER [、名前、名前空間のxmlns])の通り:最初の引数は、オブジェクトの「値」}})または厳密XMLストリング オプションのパラメータである場合:

名未知パラメータ(その可能性だけ空の文字列)

のXML名前空間の

名前空間接頭辞

のxmlns URI

だからあなたがオブジェクトを作成し、同様に、このメソッドにそれを渡す必要があります:これは動作しません

var soapHeader = { 
    "Username": "foo", 
    "Password" : "bar" 
}; 
client.addSoapHeader(soapHeader); 
+0

'addSoapHeader'はヘッダーに新しいタグを作成していますが、別のヘッダー(" soap:Header "ではなく" env:Header ")を作成します。どのようにそれを行うにはどのようなアイデア? – Michael

0
soap = require('soap') 
parseString = require('xml2js').parseString 

soap.createClient('https://api.bingads.microsoft.com/Api/Advertiser/AdIntelligence/v9/AdIntelligenceService.svc?wsdl', function(err, client) { 
    var soapHeader = { 
    'AuthenticationToken': process.argv[2], 
    'DeveloperToken': process.argv[3], 
    'CustomerId': process.argv[4], 
    'CustomerAccountId': process.argv[5] 
    }; 
    client.addSoapHeader(soapHeader); 
    client.SuggestKeywordsFromExistingKeywords({Keywords: ["Hello world"]}, function(err, result) { 
    console.log(result.body); 
    }); 
}); 

。返信は無効なログイン資格情報です。 SOAPUIでは、同じ資格情報がうまく動作します。だから、他の回答で言及されているログイン認証情報を送る形式が間違っていなければなりません。

+0

石鹸ヘッダーの各値に ''tns:AuthenticationToken':'プレフィックスを追加する必要があります – radyz

0

これは私のために働いた。クライアント作成メソッドでは、wsdl定義を取得するためにwsdl_headerが必要です。作成後、基本的な認証セキュリティを設定する必要があります。

var url = 'your WSDL url'; 
var auth = "Basic " + new Buffer("username" + ":" + "password").toString("base64"); 

soap.createClient(url,{ wsdl_headers: {Authorization: auth} }).then(
    function(client){ 
     client.setSecurity(new soap.BasicAuthSecurity('rflhconfort_ws', '6syqxje9')); 
     client.your_Method(args); 
    } 
関連する問題