Buscar en el Blog

viernes, 22 de mayo de 2015

Cómo invocar a un servicio web SOAP usando curl

En ésta publicación explico el procedimiento para invocar un Servicio Web SOAP usando la herramienta de línea de comandos curl.

Para probarlo voy a invocar un servicio web de WebserviceX.NET para obtener la tasa de conversión de monedas (CurrencyConvertor) entre USD y EUR

1. Crear un archivo XML con el contenido de la petición (Request) que se hará al servicio web. En mi caso lo llamaré request.xml con el siguiente contenido:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://www.webserviceX.NET/">
   <soapenv:Header/>
   <soapenv:Body>
      <web:ConversionRate>
         <web:FromCurrency>USD</web:FromCurrency>
         <web:ToCurrency>EUR</web:ToCurrency>
      </web:ConversionRate>
   </soapenv:Body>
</soapenv:Envelope>
2. Para invocar el servicio web usando la petición XML (Request) guardada en el archivo, ejecutar el siguiente comando:
curl -H "Content-Type: text/xml; charset=utf-8" -H "SOAPAction:"  -d @request.xml -X POST http://www.webservicex.net/CurrencyConvertor.asmx -o response.xml
Sí se desea almacenar la respuesta (Response) del servicio web en un archivo usar el argumento -o seguido del nombre del archivo (response.xml)

5 comentarios:

  1. Gran parte del código que tienes! se prueba a fondo y libre de errores? Empresas de desarrollo de software podrían apreciar el esfuerzo.

    ResponderEliminar
  2. El software que se genera en el código esta magnifico y tal y como se menciona en el articulo de arriba todos podemos aprovechar el gran valor para poderlo emplear en nuestras empresas, muchas gracias buen día.

    ResponderEliminar
  3. Este comentario ha sido eliminado por un administrador del blog.

    ResponderEliminar
  4. estoy realizando la misma prueba pero con otro servicio web y lo unico que me responde es "(7) couldn't connect to host" y no obtengo el request, que podría hacer?

    ResponderEliminar