用java中的shell命令执行curl请求?

用java中的shell命令执行curl请求?,java,shell,curl,Java,Shell,Curl,我想知道如何为我在web上找到的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) {

我想知道如何为我在web上找到的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:无法运行程序“curl”:CreateProcess error=2,系统找不到指定的文件


shell命令会执行我正在尝试执行的代码吗?或者它们是更好的执行方法吗?如果此代码无法在shell命令中执行,那么我有哪些选项,这些选项如何工作,以及我应该从何处了解更多信息。如果shell命令是一种很好的方法,那么我的代码有什么问题?我应该从哪里了解更多关于如何使用shell命令的信息?谢谢你的帮助

为什么不使用本机java方法来实现:HttpURLConnection?正如您在本教程中所看到的,这有点冗长:。更好的方法是尝试ApacheHttpClient。它有一个很好的流体界面,可以让您调用url,简单如下:

// Execute a GET with timeout settings and return response content as String.
 Request.Get("http://somehost/") .execute().returnContent().asString();
然后,您可以使用一个javajason库来操作结果。json simple是最容易使用的(但有很多可供选择):。首先解析上面http调用返回的字符串:

Object obj=JSONValue.parse(s);

我推荐一些本机方法(请求类)。如果仍然希望使用exec执行,则应将命令作为
字符串[]
传递,第一个元素是shell<代码>字符串[]cmd={{//bin/bash/“},{“curl”},{“-i”},{”https://api-fxtrade.oanda.com/v1/prices?instruments=EUR_USD\'"}};