Saltar al contenido

Node.js: cómo consumir el servicio web SOAP XML

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 noderequest 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:

  1. descargué SoapUI en mi máquina Linux.
  2. copió el WSDL xml a un archivo local
    curl http://192.168.0.28:10005/MainService/WindowsService?wsdl > wsdl_file.xml
  3. En SoapUI fui a File > New Soap project y subí mi wsdl_file.xml.
  4. 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 noderequest:

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *