Buscar en el Blog

Mostrando entradas con la etiqueta servicio web. Mostrar todas las entradas
Mostrando entradas con la etiqueta servicio web. Mostrar todas las entradas

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)

jueves, 8 de marzo de 2012

Cómo obtener la IP de un cliente de servicio web expuesto con Axis

Para obtener la dirección IP del cliente que consume un servicio web publicado con Apache Axis se tiene que hacer lo siguiente:

1. Dentro de la clase que tiene el método que se está invocando en el servicio web importar las siguientes clases:

import org.apache.axis.Constants;
import org.apache.axis.MessageContext;

2. Finalmente, incluir el siguiente código:

MessageContext curContext = MessageContext.getCurrentContext();
String ip = curContext.getProperty(Constants.MC_REMOTE_ADDR).toString();