Consumir servicios web en Java puede ser tan sencillo como el hacerlo desde .NET.
Para ello vamos a utilizar Apache AXIS
En primer lugar, creamos nuestro servicio web ASP.NET. Tendrá esta pinta:
using System;
using System.Web.Services;
using System.Web.Services.Protocols;
namespace WebService1
{
[WebService(Namespace = "http://tempuri.org/")]
[SoapDocumentService(RoutingStyle = SoapServiceRoutingStyle.RequestElement)]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Service1 : System.Web.Services.WebService
{
[WebMethod]
public Cotizacion ObtenerCotizacion (string code)
{
Cotizacion cot = new Cotizacion();
cot.Code = code;
cot.Value = 12.2f;
return cot;
}
}
public class Cotizacion
{
private string _code;
public string Code
{
get { return _code; }
set { _code = value; }
}
private float _value;
public float Value
{
get { return _value; }
set { _value = value; }
}
}
}
Como podéis ver, es un servicio muy simple, con un método ObtenerCotizacion que recibe el código de una empresa y devuelve un ficticio valor de cotización.
Vamos a ver cómo construir el proxy para utilizarlo desde Java.
AXIS trae una herramienta para generar el archivo de descripción WSDL desde un archivo Java, o el proceso contrario, crear el código Java desde un archivo WSDL.
Para ello, debemos ejecutar:
java org.apache.axis.wsdl.WSDL2Java <url del wsdl>
En nuestro caso,
java org.apache.axis.wsdl.WSDL2Java http://localhost:1871/Service1.asmx?wsdl
Esto nos genera un paquete con el namespace del servicio web, en nuestro caso org.tempuri, que contendrá varias clases:
Service1.javaService1Locator.javaService1Soap.javaService1Soap12Stub.javaService1SoapStub.javaCotizacion.java
Una vez el proxy está creado por AXIS, todo es coser y cantar. Veamos como invocarlo:
package ConsumingWebServices;
import org.apache.axis.AxisFault;
import org.tempuri.Cotizacion;
import org.tempuri.Service1Locator;
import org.tempuri.Service1Soap;
public class Main {
public static void main(String[] args) {
try {
Service1Locator loc = new Service1Locator();
Service1Soap port = loc.getService1Soap();
Cotizacion res = port.obtenerCotizacion("MSFT");
System.out.println("La cotización de " +res.getCode() +
" es " + res.getValue());
}
catch(AxisFault e) {
System.err.println("FaultCode:"+e.getFaultCode()+"\\n");
System.err.println("FaultReason:"+e.getFaultReason()+"\\n");
System.err.println("FaultActor:"+e.getFaultActor()+"\\n");
System.err.println("FaultRole:"+e.getFaultRole()+"\\n");
System.err.println("FaultNode:"+e.getFaultNode()+"\\n");
}
catch (Exception oops) {
System.err.println(oops.getMessage());
}
}
}
Si ejecutamos el ejemplo, la consola mostrará:
La cotización de MSFT es 12.2
Filed under: Coding, Tech, Web Services | Tagged: .net, apache axis, interoperability, Java, JAVA Technology, Web Services, wsdl


RSS - Posts
Como eu faço para consumir um web server apache axis no VB.NET?
aqui fala-se espanhol, não brasileiro