2013-06-08 38 views
5

Có thư viện chuyển đổi tiền tệ nào cho phép chuyển đổi một giá trị từ loại tiền tệ cụ thể sang loại tiền tệ khác không? Hoặc tôi nên thực hiện lớp học của tôi như thế nào cho điều này?Thư viện tiền tệ cho Java

Nếu ai đó có một số loại ví dụ nó sẽ là tuyệt vời ...

Trả lời

9

Lý tưởng nhất là bạn không nên viết công thức của riêng bạn để chuyển đổi đồng tiền do bản chất năng động của tiền tệ. Bạn nên truy cập một số API công khai, có thể được sử dụng đáng tin cậy để thực hiện quy đổi tiền tệ. Một trong các API như vậy là Yahoo API chuyển đổi tiền tệ. Yahoo API rất đơn giản. Yêu cầu chung cơ bản để nhận được tỷ lệ tiền tệ hiện nay giữa hai đồng tiền trông giống như:

http://download.finance.yahoo.com/d/quotes.csv?s=[From tệ] [Để tệ] = X & f = l1 & e = cs

Ví dụ, để có được tỷ giá tiền tệ hiện tại giữa đô la Mỹ và Shekels Israel, yêu cầu sau đây phải được xây dựng:

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

Nhận thông tin tỷ giá tiền tệ là khá đơn giản. Nó bắt đầu với một giao diện cơ bản để xác định một hành vi chung chuyển đổi:

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

Và các lớp thực hiện với một ứng dụng chính cơ bản cho thấy việc sử dụng của nó:

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); 
    } 
} 

QUAN TRỌNG: Yahoo hay bất kỳ nhà cung cấp khác không phải là bắt buộc phải cung cấp các API như vậy trừ khi bạn không thanh toán cho họ. Vì vậy, bạn có thể cần phải tìm một số API trả phí trong trường hợp bạn đang xây dựng một ứng dụng thương mại tùy thuộc vào chúng. Hoặc bạn cần phải thận trọng để đảm bảo rằng các API miễn phí là LÊN và CHẠY CHUNG đúng cho bạn

+1

IMO, một API được duy trì bởi một thứ gì đó lớn như Yahoo tốt hơn nhiều so với mọi thư viện tĩnh mà bạn từng tìm thấy. +1. – 11684

+0

Cảm ơn! Tôi sẽ thử nó :) – amp

+0

@amp Thêm một từ thận trọng trong độ phân giải. Xin vui lòng đọc đó là tốt. –

3

Có thể bạn có thể xem thư viện Currency Converter.

Chuyển đổi tiền tệ là thư viện Java cung cấp API cho tiền tệ chuyển đổi. Nó sử dụng các dịch vụ web ngân hàng khác nhau để tìm nạp lãi suất và cung cấp một giao diện lập trình duy nhất cho bất kỳ dịch vụ web nào được hỗ trợ .

Hiện nay các dịch vụ web được hỗ trợ:

  • bank-ua.com
  • GoogleFinance web-dịch vụ đang được phát triển cho bây giờ

Ví dụ thực hiện:

// 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... 
Các vấn đề liên quan