J'essaie de consommer un service WSDL et j'ai trouvé du savon nœud, mais je ne trouve pas comment définir certains en-têtes.
Exemple: P>
header = { "Username": "foo", "Password" : "bar" }
6 Réponses :
lire via le README pour nœud-savon , si ce que vous essayez de faire est pas Si cela est em> ws-sécurité code> (je n'ai aucune idée parce que je reste
ws-sécurité code>, suivez les instructions sur cette partie du réveil . P>
David, il semble que vous ayez raison, je l'ai personnalisé et le poussera bientôt. Mais je voudrais dire que nœud.js ne joue pas bien avec le savon du tout.
Je dirais que c'est probablement parce que le savon est une nightmare standard supporté de tout ce qui est faux et mal dans le développement "Enterprise".
Cela peut ne pas être utile maintenant toutefois à répondre à cette question qui est toujours ouverte, c'est ici.
Vous pouvez utiliser la méthode client.Addsoapher. Selon la documentation P>
Client.AddSoAPHeader (SOAPHER [ NAME, Espace de noms, XMLNS]) - Ajouter Soaphers à savon: noeud d'en-tête p>
Options p>
Objet SOAPHEREDER ({RootName: {nom: "valeur"}}) ou strict xml-string Paramètres facultatifs lorsque la première Arg est un objet: p>
Nom Paramètre inconnu (il ne peut qu'une seule chaîne vide) p>
Préfixe d'espace de noms de l'espace de noms XML P>
xmlns uri p> blockQuote>
Vous devez donc créer un objet et transmettre cela à cette méthode comme: p>
xxx pré> p>
AddSoapheader Code> Création de nouvelles balises dans l'en-tête, mais je souhaite créer un en-tête différent ("env: l'en-tête", pas "Savon: en-tête"). Une idée de comment faire ça?
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); }); }); This won't work. The reply is invalid login credentials. The same credentials work fine with SOAPUI. So, the format of sending the login credentials mentioned in the other answers must be wrong.
Vous devez ajouter le 'TNS: authentificationToken':
Cela a fonctionné pour moi. La méthode Create Client a besoin de la WSDL_HEPER pour récupérer la définition WSDL. Une fois que cela est créé, vous devez définir la sécurité d'autorisation de base.
J'ai eu le même problème et je l'ai résolu dans le cas ci-dessous est ce qui a fonctionné pour moi
Mon WSDL avec lequel j'ai inséré des données à l'aide du client SoaPUI (pour voir quels sont les champs requis) ci-dessous est la méthode que j'ai appelée nœud p>
Selon avec le Documentation , pour les en-têtes HTTP agrégés, vous Peut mettre des en-têtes, exemple de code:
Merci Yuruuuuu - Je veux dire, je me sens comme ça défait tout le but d'utiliser du savon, mais ma configuration de ses clients n'est pas parfaite - Whos est? Cela ressemble à un mélange de quelques piles de technologies différentes ... mais hey man, flux de données.
Pas un commentaire utile, mais l'un de nos principaux ingénieurs PHP avait l'habitude de dire «l'intégration WSDL est une folie» ...
J'ai la configuration du savon de nœud mais maintenant je dispose d'autres problèmes au sein de AddChild