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
fonte
2013-06-08 11:27:10
IMO, un'API gestita da qualcosa di così grande come Yahoo è molto meglio di ogni libreria statica che si possa trovare. +1. – 11684
Grazie! Lo proverò :) – amp
@amp Aggiunta una parola di cautela nella risoluzione. Si prega di leggere anche questo. –