javascript - example - soap service node js
Envío de argumentos a través de Soap en Node.js utilizando node-soap (3)
Debería funcionar si agrega espacio de nombres en el argumento de solicitud. Este es un código de muestra.
var soap = require(''soap'');
var url = "http://www.restfulwebservices.net/wcf/EmailValidationService.svc?wsdl";
var args = {"tns:request":"[email protected]"};
soap.createClient(url, function(err, client){
client.EmailValidationService.BasicHttpBinding_IEmailValidationService.Validate(args, function(err, result){
if (err) throw err;
console.log(result);
});
});
Sin embargo, devuelve "Acceso denegado".
Uso soapUI para probar este servicio web, devuelve el mismo resultado.
Intento otro servicio web, y funciona.
var soap = require(''soap'');
var url = "http://www.restfulwebservices.net/wcf/StockQuoteService.svc?wsdl";
var args = {"tns:request":"GOOG"};
soap.createClient(url, function(err, client){
client.StockQuoteService.BasicHttpBinding_IStockQuoteService.GetStockQuote(args, function(err, result){
if (err) throw err;
console.log(result);
});
});
Estoy empezando con NodeJS y me estoy dedicando a hablar con un servicio SOAP usando el jabón de nodo de milewise . Estoy utilizando una API de SOAP de validación de dirección de correo electrónico básica como mi caso de prueba.
Parece que no entiendo la forma correcta de formatear mis listas de argumentos.
Mi código de cliente SOAP:
var url = "http://www.restfulwebservices.net/wcf/EmailValidationService.svc?wsdl";
soap.createClient(url, function(err, client){
console.log(client.describe().EmailValidationService.BasicHttpBinding_IEmailValidationService.Validate);
client.Validate({result:"[email protected]"}, function(err, result){
console.log(result);
});
});
El comando client.describe () me dice cómo le gustaría a la API formatear su entrada, y cómo devolverá su salida. Esto es lo que dice:
{ input: { ''request[]'': ''xs:string'' }, output: { ''ValidateResult[]'': ''xs:boolean'' } }
Sin embargo, cuando envío los argumentos como un objeto: {request:"[email protected]"}
Siento que mis problemas radican en cómo estoy definiendo el objeto de argumentos ... ¿qué significan los corchetes en la request[]
?
ValidateResult
toma una solicitud de matriz. Eso es lo que quiere decir request[]
. Si se tratara de un objeto, debería ser solo una solicitud. Por lo tanto, si prueba args de la siguiente manera, puede funcionar:
var args = {request[]: ["[email protected]", "another email adress if you
want"]};
I have similar situation where i have accountId[] , i need to pass multiple accountID, when i pass like "tns:accountId[]": [2321,2345325], it failing saying incorrect request parameter, it comes as <tns:accountId[]>2321</tns:accountId[]>
<tns:accountId[]>2345325</tns:accountId[]>.
I need to get <tns:accountId>2321</tns:accountId>
<tns:accountId>2345325</tns:accountId>. When i tried removing "[]", it comes as <accountId> only and it is failing. Can someone please help me?