Skip to main content

Consumir Web Services SOAP

· 3 min read

En este post describiremos cómo crear clases para consumir un web services SOAP utilizando un asistente de Eclipse. Como ejemplo, consumiremos el web service proporcionado por http://www.webservicex.com/globalweather.asmx. El wsdl de este web service se encuentra en http://www.webservicex.com/globalweather.asmx?WSDL.

En primer lugar creamos un proyecto simple java, File > New > Java Project, al que llamaremos webservice-client-demo.

Seguidamente, situándonos en el directorio src, con el botón derecho del ratón elegiremos New > Other ... > Web Service Client

En la ventana que nos aparece indicaremos en Service definition la ruta del wsdl. En la barra vertical izquierda movemos la bola hasta la parte inferior para que el sistema cree también un Test client. En la parte derecha, bajo Configuration, podemos seleccionar el runtime del  web service, Axis, Axis2, o CXF en función del runtime del servidor.

Al pinchar en Next se puede producir el error IWAB0503E Unable to update Java build path. Please check your system environment, cuya solución está indicada aquí. Si no se produce error, se mostrará la siguiente ventana:

Pinchando de nuevo en Next, se muestra la siguiente  ventana, en la que se pide que arranquemos el servidor web indicado anteriormente.

Tras pinchar en Start Server se activará el botón Next. Al pinchar en Next se mostrará una ventana como la siguiente, pero en la que está marcada la casilla Test generated proxy. Nosotros desactivaremos dicha casilla y pulsamos Finish, ya que crearemos una clases por nuestra cuenta para hacer las pruebas.

Creamos una clase con main bajo el paquete client, tal y como se muestra en la siguiente imagen:

El contenido de la clase puede ser el siguiente:

package NET.webserviceX.www.client;

import java.rmi.RemoteException;

import NET.webserviceX.www.GlobalWeatherSoap;
import NET.webserviceX.www.GlobalWeatherSoapProxy;

public class TestClient {

public static void main(String\[\] args) {
GlobalWeatherSoap gw = new GlobalWeatherSoapProxy("http://www.webservicex.com/globalweather.asmx");
try {
String data = gw.getWeather("Madrid", "Spain");
System.out.println(data);
data = gw.getCitiesByCountry("Spain");
System.out.println(data);
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

}

Si ejecutamos esta clase con botón derecho del ratón, Run As > Java Application podremos ver el resultado que nos ofrece la consulta al web service.

El árbol del proyecto es:

Los fuentes del proyecto se encuentran en el archivo webservice-client-demo.zip

Post relacionados: