Maison > Article > interface Web > Analyse des problèmes de mise en œuvre du service Web par nodejs
Le contenu de cet article concerne l'analyse du problème de l'implémentation du service Web par nodejs. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
Bibliothèques, outils
node-soap
soapui
Create
Faites attention à l'ordre des paramètres dans args
const soap = require('soap'); let URL = "你的wsdl路径,可以是url或者本地文件"; // 注意参数顺序!!!!!!!!! let args = { key1: val1, key2: val2 }; // promise创建 let client = await soap.createClientAsync(URL); // callback创建 soap.createClient(url, function(err, client) { client.MyFunction(args, function(err, result) { console.log(result); }); });
Personnellement, j'aime le formulaire de promesse. Ensuite, l'appel d'autres fonctions peut être implémenté de deux manières. S'il s'agit d'un formulaire asynchrone, vous devez ajouter "Async" après le nom de la fonction que vous appelez.
Il n'y a rien de spécial à n'avoir qu'une seule couche de données de paramètres, comme :
args = { key1: val1, key2: val2 }
S'il y a une autre couche dans le paramètre, node-soap ne sera pas automatiquement basé sur wsdl Générer des données avec un préfixe d'espace de noms, et le XML ne pourra pas être analysé après avoir été transmis au serveur.
Par exemple :
let val2: Array<datatype> = [ { key3: val3 } ]; let args = { key1: val1, key2: val2 }</datatype>
À ce stade, vous devez effectuer un travail supplémentaire lors de la transmission des données :
let val2: Array<datatype> = [ { key3: val3 } ]; let args = { key1: val1, key2: { dataType: val2 } }</datatype>
Ce qui précède. dataType doit générer du XML Lorsque son type est déclaré en XML ; sinon, il est écrit d'une autre manière, par exemple :
// dataType或namespace prefix在生成xml未声明 let val2: Array<datatype> = [ { key3: val3 } ]; let args = { key1: val1, key2: val2 }</datatype>
doit être réécrit comme (ici en utilisant Array
let val2: Array<string> = [ val3, val4 ]; let args = { attributes: { 'xmlns:arr': 'http://schemas.microsoft.com/2003/10/Serialization/Arrays' }, key1: val1, key2: { "arr:string": val2 } }</string>
https://stackoverflow.com/que...
La lecture prend 6 minutes
Bibliothèques, outilscréer Faites attention à l'ordre des paramètres dans args
Personnellement, j'aime le formulaire de promesse. Ensuite, l'appel d'autres fonctions peut être implémenté de deux manières. S'il s'agit d'un formulaire asynchrone, vous devez le faire. ajoutez "Async" après le nom de la fonction que vous appelez ". Appel Il n'y a rien de spécial à n'avoir qu'une seule couche de données de paramètres, comme : S'il y a une autre couche dans le paramètre, node-soap ne sera pas automatiquement basé sur wsdl Générer des données avec un préfixe d'espace de noms, et le XML ne pourra pas être analysé après avoir été transmis au serveur. Par exemple :
À ce stade, vous devez effectuer un travail supplémentaire lors de la transmission des données :
const soap = require('soap'); let URL = "你的wsdl路径,可以是url或者本地文件"; // 注意参数顺序!!!!!!!!! let args = { key1: val1, key2: val2 }; // promise创建 let client = await soap.createClientAsync(URL); // callback创建 soap.createClient(url, function(err, client) { client.MyFunction(args, function(err, result) { console.log(result); }); });
args = { key1: val1, key2: val2 }
Rapport
let val2: Array<datatype> = [ { key3: val3 } ]; let args = { key1: val1, key2: val2 }</datatype>
let val2: Array<datatype> = [ { key3: val3 } ]; let args = { key1: val1, key2: { dataType: val2 } }</datatype>
// dataType或namespace prefix在生成xml未声明 let val2: Array<datatype> = [ { key3: val3 } ]; let args = { key1: val1, key2: val2 }</datatype>
let val2: Array<string> = [ val3, val4 ]; let args = { attributes: { 'xmlns:arr': 'http://schemas.microsoft.com/2003/10/Serialization/Arrays' }, key1: val1, key2: { "arr:string": val2 } }</string>Vous pourriez être intéressé
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!