java如何获取汇率
获取汇率的方法
使用Java获取汇率可以通过多种方式实现,包括调用公开的API、解析网页数据或使用第三方库。以下是几种常见的方法:
调用汇率API
许多金融数据提供商和网站提供免费的汇率API,例如ExchangeRate-API、Open Exchange Rates等。以下是使用ExchangeRate-API的示例代码:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class ExchangeRateFetcher {
public static void main(String[] args) {
try {
String apiKey = "YOUR_API_KEY";
String fromCurrency = "USD";
String toCurrency = "EUR";
String urlStr = "https://v6.exchangerate-api.com/v6/" + apiKey + "/pair/" + fromCurrency + "/" + toCurrency;
URL url = new URL(urlStr);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
StringBuilder response = new StringBuilder();
while ((line = reader.readLine()) != null) {
response.append(line);
}
reader.close();
System.out.println("Exchange rate: " + response.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
使用第三方库
某些Java库简化了汇率数据的获取过程。例如,使用unirest-java库可以更简洁地调用API:
import com.mashape.unirest.http.Unirest;
import com.mashape.unirest.http.exceptions.UnirestException;
public class ExchangeRateUnirest {
public static void main(String[] args) {
try {
String apiKey = "YOUR_API_KEY";
String response = Unirest.get("https://v6.exchangerate-api.com/v6/" + apiKey + "/pair/USD/EUR")
.asString()
.getBody();
System.out.println("Exchange rate: " + response);
} catch (UnirestException e) {
e.printStackTrace();
}
}
}
解析网页数据
如果API不可用,可以通过解析网页内容获取汇率。例如,使用jsoup库解析网页:
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
public class WebScraper {
public static void main(String[] args) {
try {
Document doc = Jsoup.connect("https://www.x-rates.com/calculator/?from=USD&to=EUR&amount=1").get();
Element rateElement = doc.select(".ccOutputRslt").first();
String rate = rateElement.text().split(" ")[0];
System.out.println("Exchange rate: " + rate);
} catch (Exception e) {
e.printStackTrace();
}
}
}
使用Java内置功能
对于简单的需求,可以通过Java内置的HttpClient(Java 11及以上版本)获取数据:

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class ExchangeRateHttpClient {
public static void main(String[] args) {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.exchangerate-api.com/v4/latest/USD"))
.build();
client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
.thenApply(HttpResponse::body)
.thenAccept(System.out::println)
.join();
}
}
注意事项
- 使用API时需注册并获取API密钥。
- 频繁请求可能导致API限制或收费。
- 网页解析可能因网页结构变化而失效,需定期维护代码。
- 处理网络请求时需考虑异常处理和超时设置。






