是否有一些货币转换器库可以将一个值从一种特定的货币转换为另一种货币?还是应该为此实现how类?
理想情况下,由于货币的动态性,您不应该编写自己的公式来转换货币。访问一些公共api是一个好主意,这些api可以可靠地用于进行货币转换。其中一个API是Yahoo货币转换器API。雅虎API非常简单。获取两种货币之间的当前汇率的基本通用请求如下所示:
http://download.finance.yahoo.com/d/quotes.csv?s=[从货币][货币)= X& f = l1& e = cs
例如,为了获得美元和以色列谢克尔之间的当前货币汇率,应该构造以下请求:
http://download.finance.yahoo.com/d/quotes.csv?s=USDILS=X& f = l1& e = cs
获取货币汇率信息非常简单。它从定义一般转换器行为的基本接口开始:
public interface CurrencyConverter {
public float convert(String currencyFrom, String currencyTo) throws Exception;
}
和实现类的基本主应用程序显示其用法:
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);
}
}
重要提示:Yahoo或任何其他提供商没有义务提供此类api,除非您不向他们付费。因此,如果您要构建依赖于它们的商业应用程序,您可能需要寻找一些付费api。或者您需要保持警惕,以确保免费api为您正常运行
你可以看看货币转换器库。
Currency Converter是一个提供货币API的Java库转换。它使用不同的银行网络服务来获取利率和为任何受支持的程序提供单个编程接口web服务。
目前支持以下web服务:
- bank-ua.com
- GoogleFinance web-service目前正在开发中
示例:
// 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...
您想在线转换它还是之前输入特定的值?也许这将帮助:http://www.panticz.de/Simple-Java-currency-converter