domingo, junio 23, 2013

Servicio Web para Consultar el Tipo de Cambio del Córdoba Respecto al Dólar (cliente Java)

WSLD Servicio Web Tipo Cambio BCN
El Banco Central de Nicaragua ha publicado en Internet un servicio web SOAP para consultar las tasas de cambio del Córdoba respecto al Dólar. Según he podido experimentar han publicado las tasas de cambio a partir del 1ro de Enero del 2012.

El siguiente sitio web detalla algunos aspectos, tanto técnicos, como de condiciones de uso del servicio web:

http://www.bcn.gob.ni/tc/

El BCN ha hecho público ejemplos de cómo consumir el servicio web en plataformas .NET (con VisualBasic) y en PHP. Dado que falta un ejemplo para todos los que usamos Java, estoy liberando bajo licencia de dominio público, un archivo .jar para que pueda ser agregado en proyectos libres o comerciales.

Descargar archivo .jar (Java) para consultar servicio web de tipo de cambio.

Descargar código fuente y documentación del proyecto para el IDE Eclipse.

Ejecución del demo:

java -jar tcBCN.jar



Ejemplo de uso en un programa propio:



package info.denisjtorresg.tcbcn;

import java.util.Date;
import java.util.Map;
import java.util.Map.Entry;

public class Prueba {

public static void main(String[] args) {
       
// Tipo de cambio del día
        System.out.println(TipoCambioBCNSimple.getTipoCambio());
       
// Tipo de cambio en la fecha indicada (año, mes, día)
        System.out.println(TipoCambioBCNSimple.getTipoCambio(2013,6,21));

System.out.println(TipoCambioBCNSimple.getTipoCambio(2012,1,1));
       
// Tipos de cambio del mes indicado
Map tcRango = TipoCambioBCNSimple.getTipoCambio(2013, 2);
        

for(Entry elemento: tcRango.entrySet()){
  Date fecha = elemento.getKey();
  Double tc = elemento.getValue();
           
  System.out.println(fecha + " => " + tc); 

}
}
}
 

El archivo jar suministra una clase de utilería simple llamada TipoCambioBCNSimple ubicada en el paquete: info.denisjtorresg.tcbcn. No requiere de ningún API o jar extra, funciona con Java SE 6 o superior.

Esta clase contiene el método estático getTipoCambio el cual está sobrecargado para recibir distintos tipos de parámetros que especifiquen la fecha o rango de fechas para las cuales se desea conocer el tipo de cambio.

La documentación completa de la clase de utilería TipoCambioBCNSimple se puede ver en:

http://sites.google.com/site/denisjtorresg/TipoCambioBCNSimple.html

Espero que sea de utilidad para el que la necesite.

Otros artículos similares:
Validar números de cédulas de Nicaragua con Java

13 comentarios:

  1. he agregado las fuentes de forma publica a github https://github.com/necronet/tcbcn2

    ResponderEliminar
  2. No tenes los códigos para VBA.

    ResponderEliminar
    Respuestas
    1. En la web del BCN está para VB.net

      http://www.bcn.gob.ni/tc/

      Eliminar
  3. Hola no tengo para c#, pero en la web del BCN hay un ejemplo para VB.net

    http://www.bcn.gob.ni/tc/

    Suerte!

    ResponderEliminar
  4. hola, soy algo nuevo y no pude hacer que me funcione en mi proyecto, me puede ayudar

    ResponderEliminar
  5. Hola, disculpa creo que ya esta un poco mejor el problema es con las ultimas 2 lineas de codigo.

    Date fecha = elemento.getKey();
    Double tc = elemento.getValue();

    getKey y getValue me dan error,

    Creo que es por el tipo de dato de Entry es imcompatible.

    for(Entry elemento: tcRango.entrySet()){

    ResponderEliminar
  6. Hola, puedes indicar cuál es el error que te presenta?

    ResponderEliminar
    Respuestas
    1. Hola, es con Entry no ce que tipo de dato es.

      Logre que el codigo funcione y que compile de esta manera:

      for (Iterator it = tcRango.entrySet().iterator(); it.hasNext();) {
      Entry elemento = (Entry) it.next();
      Date fecha = (Date) elemento.getKey();
      Double tc = (Double) elemento.getValue();
      System.out.println(fecha + " => " + tc);
      }

      Usando un iterador en el for y a la variable elemento le asigno el iterador convirtiendolo en Entry, la duda es que es entry no encuentro su tipo de dato.

      Lo unico que se me ocurre es que es un tipo abstracto.

      Espero explicarme bien, gracias por tu tiempo.

      Eliminar
  7. Hola

    Entry es un tipo de dato. Más formalmente es una Interface que está definida dentro de Map:

    https://docs.oracle.com/javase/7/docs/api/

    Y en efecto una interfaz es una "clase abstracta". La implementación de ese tipo de dato Map.Entry corresponde a cada máquina virtual (JVM).

    Puedes usar genéricos para facilitar la iteración y no hacer el casting de forma explícita.

    Si tienes dudas me mandas un correo y podemos conversar más al respecto. "me {arroba} denisjtorresg {punto} info"

    ResponderEliminar
  8. Disculpa, ¿Cómo obtengo la tasa con respecto a compra y venta?

    Saludos.

    ResponderEliminar