Elasticsearch REST api通过curl无法在java.runtime.exec中运行

时间:2015-06-12 05:03:57

标签: java curl elasticsearch libcurl

我有一个java应用程序,我只是在读取文件并将数据插入到elasticsearch索引中。

这是我正在使用的代码。

        in = new BufferedReader(new FileReader("file.txt"));
        line = in.readLine();
        while ((line = in.readLine()) != null) {
            System.out.println("Command: curl -XPOST 'http://localhost:9200/esensor/data' -d '{ \"temp\": \""+line+"\" }'");
            p = Runtime.getRuntime().exec("curl -XPOST 'http://localhost:9200/esensor/data' -d '{ \"temp\": \""+line+"\" }'");
            p.waitFor();

            BufferedReader err = new BufferedReader(new InputStreamReader(p.getErrorStream()));
            while ((line = err.readLine()) != null) {
                 System.out.println(line);
            }
            break;
        }
        in.close();

但这不起作用。 Curl给出了这个错误。

curl: (1) Protocol 'http not supported or disabled in libcurl
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0curl: (6) Could not resolve host: "temp"

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0curl: (6) Could not resolve host: "17.35757"
curl: (3) [globbing] unmatched close brace/bracket in column 1

但是看到我打印了我正在执行的命令。如果我在控制台中手动复制粘贴,那么一切正常。为什么会这样?我做错了什么?

1 个答案:

答案 0 :(得分:0)

密钥出现在curl的错误消息中:

curl: (1) Protocol 'http not supported or disabled in libcurl

协议名称之前的单引号显示curl作为参数的一部分传递,因此它不会按照您希望的方式工作,而是为curl提供格式错误的URL。