2013-06-08 14 views
5

Esiste una libreria di convertitori di valute che consente di convertire un valore da una valuta specifica a un'altra? O dovrei implementare il mio come classe per questo?Libreria di valute per Java

Se qualcuno ha qualche tipo di esempio sarebbe bello ...

risposta

9

Idealmente non si dovrebbe scrivere i propri formule per convertire la valuta a causa della natura dinamica delle valute. Sarà una buona idea accedere ad alcune API pubbliche, che possono essere utilizzate in modo affidabile per eseguire la conversione di valuta. Una di queste API è l'API del convertitore di valuta Yahoo. L'API di Yahoo è molto semplice. La richiesta generale di base per ottenere il tasso di cambio corrente tra due valute si presenta come:

http://download.finance.yahoo.com/d/quotes.csv?s=[From Valuta] [Per valuta] = X & f = l1 & e = cs

Ad esempio, al fine di ottenere il tasso di cambio corrente tra dollari americani e shekel israeliani, la seguente richiesta dovrebbe essere costruito:

http://download.finance.yahoo.com/d/quotes.csv?s=USDILS=X&f=l1&e=.cs

Ottenere le informazioni sul tasso di cambio è piuttosto semplice. Si inizia con un'interfaccia di base per definire un comportamento generale convertitore:

public interface CurrencyConverter { 
    public float convert(String currencyFrom, String currencyTo) throws Exception; 
} 

E la classe che implementa con un'applicazione principale base che mostra il suo utilizzo:

import org.apache.http.client.ResponseHandler; 
import org.apache.http.client.methods.HttpGet; 
import org.apache.http.impl.client.BasicResponseHandler; 
import org.apache.http.impl.client.CloseableHttpClient; 
import org.apache.http.impl.client.HttpClientBuilder; 

import java.io.IOException; 

public class YahooCurrencyConverter implements CurrencyConverter 
{ 
    public float getConversionRate(String from, String to) throws IOException 
    { 
     HttpClientBuilder builder = HttpClientBuilder.create(); 
     try (CloseableHttpClient httpclient = builder.build()) 
     { 
      HttpGet httpGet = new HttpGet("http://quote.yahoo.com/d/quotes.csv?s=" + from + to + "=X&f=l1&e=.csv"); 
      ResponseHandler<String> responseHandler = new BasicResponseHandler(); 
      String responseBody = httpclient.execute(httpGet, responseHandler); 

      return Float.parseFloat(responseBody); 
     } 
    } 

    public static void main(String[] arguments) throws IOException 
    { 
     YahooCurrencyConverter yahooCurrencyConverter = new YahooCurrencyConverter(); 
     float current = yahooCurrencyConverter.getConversionRate("USD", "ILS"); 
     System.out.println(current); 
    } 
} 

IMPORTANTE: Yahoo o qualsiasi altro fornitore non è obbligato a fornire tali API a meno che non le stiate pagando. Quindi potrebbe essere necessario cercare alcune API a pagamento nel caso in cui si stiano costruendo applicazioni commerciali a seconda di esse. O devi essere vigile per assicurarti che le API libere siano UP e RUNNING correttamente per te

+1

IMO, un'API gestita da qualcosa di così grande come Yahoo è molto meglio di ogni libreria statica che si possa trovare. +1. – 11684

+0

Grazie! Lo proverò :) – amp

+0

@amp Aggiunta una parola di cautela nella risoluzione. Si prega di leggere anche questo. –

3

Potresti dare un'occhiata alla libreria Currency Converter.

Currency Converter è una libreria Java che fornisce API per la conversione di valuta . Utilizza diversi servizi web bancari per il recupero delle tariffe e fornisce un'unica interfaccia di programmazione per tutti i servizi Web supportati .

Attualmente sono supportati questi web-services:

  • bank-ua.com
  • GoogleFinance web-service è in fase di sviluppo, per ora

esempio tratto:

// create an instance where USD is a default currency to convert from, and EUR a default one to convert to 
// Using one of the implementation: BankUaCom 
CurrencyConverter currencyConverter = new BankUaCom(Currency.USD, Currency.EUR); 

// convert USD to EUR (the first parameter is amount of money you'd like to convert) 
currencyConverter.convertCurrency(1f); 

// the same 
currencyConverter.convertCurrency(1f, Currency.EUR); 

// the same 
currencyConverter.convertCurrency(1f, Currency.USD, Currency.EUR); 

// convert EUR to USD 
currencyConverter.convertCurrency(1f, Currency.EUR, Currency.USD); 

// and you can continue with any other supported currencies...