在当前启用Web,数据驱动的时代,数据可访问性对于更快,更好的应用程序至关重要。许多数据源使用REST服务。通过这些服务,客户可以以行业标准的方式获取数据。此外,这些服务缩短了产品开发周期,并帮助企业更快地将产品推向市场。我们将在此示例中使用Apache Software Foundation中的HTTP组件库。
调用使用HTTPCLIENT的REST数据
Apache HTTPClient库使管理HTTP请求变得易于易于管理。在Intellij软件开发环境中,我们将使用Maven项目。打开Intellij并在SRC // Java目录中创建一个新的HTTP REST-CLIEN-CLIEN-MAVEN项目作为起点。此外,我们将创建一个名为RestClient.java的全新Java文件,并添加我们的代码。
安装库
通过在我们的Maven项目中包含库来简化pom.xml中的代码。在项目路线上查找pom.xml文件是打开它的第一步。必须将以下代码插入JSON标签依赖项>和 /依赖项>库中的自动IMPORT。
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.10</version>
</dependency>
让我们编写一些代码。
我们将首先添加发送请求所需的库。
import org.apache.http.HttpEntity;
import org.apache.http.HttpHeaders;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
之后,我们将创建程序的骨架。
public class RESTClient{
public static void main(String[] args) throws IOException{
//Request code inserted here
}
}
所需的货币和我们的API密钥将在下一步中编码为请求字符串。您需要一个API密钥来从Tradermade REST服务请求外汇,CFD和加密货币数据。下载并免费注册以获取API密钥。在我们的文档页面上,您还可以找到一个预填充的代码样本。为了简单起见,本教程利用了实时端点。但是,Tradermade提供了各种目的。请访问我们的Restful API文档页面,以获取有关我们提供的端点的更多信息。
HttpGet request = new HttpGet("https://marketdata.tradermade.com/api/v1/live?currency=EURUSD&api_key=API_KEY");
在此阶段,我们可以发送请求并接收输出。
CloseableHttpResponse response = httpClient.execute(request);
try {
HttpEntity entity = response.getEntity();
if (entity != null) {
// return it as a String
String result = EntityUtils.toString(entity);
System.out.println(result);
}
} finally {
response.close();
}
您可以运行该程序以查看指定货币对的当前实时费率,看起来像这样:
{
"endpoint": "live",
"quotes": [
{
"ask": 1.33313,
"base_currency": "GBP",
"bid": 1.33311,
"mid": 1.33312,
"quote_currency": "USD"
}
],
"requested_time": "Wed, 02 Mar 2022 12:00:14 GMT",
"timestamp": 1646222414
}
接收到数据后,我们可以编写一些代码来解析JSON。必须将新条目添加到pom.xml文件中以导入JSON库,如下所示:
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20211205</version>
</dependency>
然后,我们需要在.java文件中导入类。
import org.json.JSONArray;
import org.json.JSONObject;
现在,我们将将结果数据传递到新的JSONOBJECT中,以从IT()生成JonoBject。我们可以使用GetJsonArray函数在加载时从JSONOBJECT中检索报价对象。稍后,我们可以再次检查数据,将其格式化我们想要的方式并接收结果。
JSONObject obj = new JSONObject(result);
JSONArray quotes = obj.getJSONArray("quotes");
System.out.println(quotes.toString());
for (int i = 0; i < quotes.length(); i++) {
JSONObject quote = quotes.getJSONObject(i);
System.out.println(" Quote " + quote.getString("base_currency") + " " + quote.getString("quote_currency") + " " + quote.getFloat("bid") + " " + quote.getFloat("ask"));
}
我们获得类似于以下结果的结果:
Quote EURUSD 1.11069 1.11069
Quote GBPUSD 1.33504 1.33506
对于外汇,CFD和加密货币的市场数据,Tradermade通过REST和Websocket提供了多个终点。有关更多信息,请访问https://tradermade.com/。
import org.apache.http.HttpEntity;
import org.apache.http.HttpHeaders;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
import org.json.JSONArray;
import org.json.JSONObject;
public class RESTClient {
public static void main(String[] args) throws IOException {
CloseableHttpClient httpClient = HttpClients.createDefault();
try {
HttpGet request = new HttpGet("https://marketdata.tradermade.com/api/v1/live?currency=EURUSD,GBPUSD&api_key=YOUR_API_KEY");
CloseableHttpResponse response = httpClient.execute(request);
try {
HttpEntity entity = response.getEntity();
if (entity != null) {
// return it as a String
String result = EntityUtils.toString(entity);
System.out.println(result);
JSONObject obj = new JSONObject(result);
JSONArray quotes = obj.getJSONArray("quotes");
System.out.println(quotes.toString());
for (int i = 0; i < quotes.length(); i++) {
JSONObject quote = quotes.getJSONObject(i);
System.out.println(" Quote " + quote.getString("base_currency") + quote.getString("quote_currency") + " " + quote.getFloat("bid") + " " + quote.getFloat("ask"));
}
}
} finally {
response.close();
}
} finally {
httpClient.close();
}
}
}
也访问我们的其他教程:
Data Visualization Python
Forex Crypto and CFD REST JSON With Java