moonorongo
3/30/2016 - 3:08 PM

Web Services con Java y Eclipse

Web Services con Java y Eclipse

Para "consumir" un webservice es tan simple como crear un proyecto java, 
luego hacemos click derecho sobre el nombre del proyecto, y hacemos 
New -> Other -> WebService Client

ponemos la url de la definicion wsdl y si esta ok nos permitira avanzar, y generara todas las clases necesarias para operar, asi como los tipos de datos e incluso las libs necesarias.

"generalmente" lo que nos interesa son 
  <ALGO>Locator()
  y <ALGOSoap>Stub, que es lo que tendra las fn para obtener lo que queremos.
  
  hay que ver q retornan cada fn, ver que tipos de datos nos devuelve 
  
  ver el archivo ClienteWebService.java para mas detalles, hay ejemplo de 3 webservices diferentes.
  
  ver mas en 
  http://chuwiki.chuidiang.org/index.php?title=Categor%C3%ADa:Web_Services
  
  http://quicksoftwaretesting.com/sample-wsdl-urls-testing-soapui/
  
crear y consumir un WS
http://chuwiki.chuidiang.org/index.php?title=Ejemplo_sencillo_de_web_service_con_jax-ws
  
package wsdlDemo;

import java.rmi.RemoteException;
import javax.xml.rpc.ServiceException;
import gy.bn.*;
import NET.webserviceX.www.*;
import com.cdyne.ws.WeatherWS.*;

@SuppressWarnings("unused")
public class ClienteWebService {
	
// https://bn.gy/i8KRt  => www.threads-srl.com.ar
	
	public static void main(String[] args) {
		// api short links

		APILocator locator = new APILocator();
		try {
			APISoapStub soap = (APISoapStub) locator.getPort(APISoapStub.class);
			System.out.println("la url es:");
			SmallContainer sc = soap.getRealUrl("i8KRt"); 
			System.out.println(sc.getRealUrl()); 
		} catch (RemoteException e) {
			e.printStackTrace();
		} catch (ServiceException e) {
			e.printStackTrace();
		}

		// api globalweather
		// obtengo el clima 

		GlobalWeatherLocator weatherLocator = new GlobalWeatherLocator();
		
		try {
			GlobalWeatherSoapStub globalSoap = (GlobalWeatherSoapStub) weatherLocator.getPort(GlobalWeatherSoapStub.class);
//			System.out.println(globalSoap.getCitiesByCountry("United States"));
			System.out.println(globalSoap.getWeather("Shelter Cove", "United States"));			
			
		} catch (ServiceException e) {
			e.printStackTrace();
		} catch (RemoteException e) {
			e.printStackTrace();
		}


		WeatherLocator weatherLocator = new WeatherLocator();
		try {
			WeatherSoapStub weatherSoap = (WeatherSoapStub) weatherLocator.getPort(WeatherSoapStub.class);
			WeatherReturn wr = weatherSoap.getCityWeatherByZIP("20636");
			System.out.println(wr.getRelativeHumidity());
			System.out.println(wr.getCity());
		} catch (ServiceException e) {
			e.printStackTrace();
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 

		
	}

}