执行命令行时出现问题 - curl命令,使用我编写的java程序将数据发送到Influxdb服务器。
这是在我的程序中发送命令的代码:
public static void main (String[] args){
String command = "curl -i -XPOST 'http://localhost:8086/write?db=speed' --data-binary 'test,dataset=perf cpu=10'";
execcommand (command);
}
public static void execcommand (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();
}
System.out.println(output.toString().length());
}
问题是数据没有发送到服务器,命令的响应为零。
可以从我的命令行运行完全相同的命令,因此命令的语法没有任何问题。如果该信息有用,我正在使用macintosh。
My-MBP:~ MB$ curl -i -XPOST 'http://localhost:8086/write?db=speed' --data-binary 'test,dataset=perf cpu=10'
HTTP/1.1 204 No Content
Request-Id: 3f866002-3640-11e6-8988-000000000000
X-Influxdb-Version: 0.13.0
Date: Sun, 19 Jun 2016 17:07:05 GMT
My-MBP:~ MB$
执行命令行参数的代码是否正确?为什么命令没有从我的java程序执行,但从终端工作正常?
谢谢。
答案 0 :(得分:1)
使用String[]
的{{1}}版本。所以代替
Runtime.exec
使用String []
创建带参数的命令String command = "curl -i -XPOST 'http://localhost:8086/write?db=speed' --data-binary 'test,dataset=perf cpu=10'";
然后调用exec
String[] command = {"curl", "-i", "-XPOST", "http://localhost:8086/write?db=speed", "--data-binary", "test,dataset=perf cpu=10"};
希望这有帮助。