我想知道如何为我在网上找到的API运行此命令行代码。 API要我运行的代码如下:
curl -i "https://api-fxtrade.oanda.com/v1/prices?instruments=EUR_USD"
此代码将在JSON响应中返回数据。我试图通过运行它抛出一个shell命令来实现这一点。我的代码如下:
import java.io.*;
public class FxTest {
public static void main(String[] args) {
FxTest obj = new FxTest();
String command = "curl -i \"https://api-fxtrade.oanda.com/v1/prices?instruments=EUR_USD\"";
String output = obj.executeCommand(command);
System.out.println(output);
}
private String executeCommand(String command) {
StringBuffer output = new StringBuffer();
Process p;
try {
p = Runtime.getRuntime().exec(command);
p.waitFor();
BufferedReader reader =
new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
while ((line = reader.readLine())!= null) {
output.append(line + "\n");
}
} catch (Exception e) {
e.printStackTrace();
}
return output.toString();
}
}
当我运行此代码时,我收到此错误:
java.io.IOException: Cannot run program "curl": CreateProcess error=2, The system cannot find the file specified
shell命令是否会执行我正在尝试执行的代码,或者是更好的方法来执行此操作?如果这个代码不可能在shell命令中执行,我有哪些选项,这些选项如何工作以及我应该在哪里了解更多信息。如果shell命令是一个很好的方法来解决这个问题,那么我的代码出错了,在哪里可以了解如何使用shell命令?谢谢你的帮助!!!
答案 0 :(得分:0)
为什么不直接使用本机java方法:HttpURLConnection?正如您在本教程中看到的那样,它有点长篇大论:http://www.journaldev.com/7148/java-httpurlconnection-example-to-send-http-getpost-requests。更好的是,尝试apache httpclient。它有一个很好的流体界面,可以让你调用一个简单的URL:
// Execute a GET with timeout settings and return response content as String.
Request.Get("http://somehost/") .execute().returnContent().asString();
然后您可以使用其中一个java Jason库来操作结果。 json-simple是最容易使用的(但有很多可供选择):https://github.com/fangyidong/json-simple。首先解析上面http调用返回的字符串:
Object obj=JSONValue.parse(s);