Sé libre de compartir nuestra página y códigos en tus redes sociales, apóyanos para aumentar nuestra comunidad.
Solución:
No tienes tantas opciones.
Probablemente querrás usar uno de:
- jabón de nodo
- jabón fuerte (reescritura de
node-soap
) - jabon facil
Creo que una alternativa sería:
- utilice una herramienta como SoapUI (http://www.soapui.org) para registrar los mensajes xml de entrada y salida
- use la solicitud de nodo (https://github.com/mikeal/request) para formar un mensaje xml de entrada para enviar (POST) la solicitud al servicio web (tenga en cuenta que los mecanismos estándar de plantillas de JavaScript como ejs (http://embeddedjs.com /) o bigote (https://github.com/janl/mustache.js) podría ayudarte aquí) y finalmente
- use un analizador XML para deserializar los datos de respuesta a los objetos de JavaScript
Sí, este es un enfoque bastante sucio y de bajo nivel, pero debería funcionar sin problemas.
Si node-soap
no te funciona solo usa node
request
module y luego convierta el xml a json si es necesario.
Mi solicitud no estaba funcionando con node-soap
y no hay soporte para ese módulo más allá del soporte pagado, que estaba más allá de mis recursos. Así que hice lo siguiente:
- descargué SoapUI en mi máquina Linux.
- copió el WSDL xml a un archivo local
curl http://192.168.0.28:10005/MainService/WindowsService?wsdl > wsdl_file.xml
- En SoapUI fui a
File > New Soap project
y subí miwsdl_file.xml
. - En el navegador, expandí uno de los servicios, hice clic con el botón derecho en la solicitud y hice clic en
Show Request Editor
.
Desde allí podría enviar una solicitud y asegurarme de que funcionó y también podría usar el Raw
o HTML
datos para ayudarme a crear una solicitud externa.
Raw de SoapUI para mi solicitud
POST http://192.168.0.28:10005/MainService/WindowsService HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: text/xml;charset=UTF-8
SOAPAction: "http://Main.Service/AUserService/GetUsers"
Content-Length: 303
Host: 192.168.0.28:10005
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
XML de SoapUI
Usé lo anterior para construir lo siguiente node
request
:
var request = require('request');
let xml =
`
`
var options =
url: 'http://192.168.0.28:10005/MainService/WindowsService?wsdl',
method: 'POST',
body: xml,
headers:
'Content-Type':'text/xml;charset=utf-8',
'Accept-Encoding': 'gzip,deflate',
'Content-Length':xml.length,
'SOAPAction':"http://Main.Service/AUserService/GetUsers"
;
let callback = (error, response, body) =>
if (!error && response.statusCode == 200)
console.log('Raw result', body);
var xml2js = require('xml2js');
var parser = new xml2js.Parser(explicitArray: false, trim: true);
parser.parseString(body, (err, result) =>
console.log('JSON result', result);
);
;
console.log('E', response.statusCode, response.statusMessage);
;
request(options, callback);
Tienes la opción de auxiliar nuestro análisis poniendo un comentario o dejando una puntuación te estamos agradecidos.