【发布时间】:2016-03-02 08:46:59
【问题描述】:
我正在尝试在 java 程序中执行以下 shell 命令:
curl -k -X POST -H "Content-Type:application/json" -d '{"COMMAND":"DISCSTATUS","USER":"PMDC"}'
https://167.254.226.215/DcnWebSvr/DcnSvrCmd
返回字符串
{"Result":"SUCCESS"}
从终端,这个命令可以正常工作。但是当我尝试从 java 程序中执行此操作时,我没有得到相同的结果。
这是我的代码:
StringBuffer output = new StringBuffer();
ProcessBuilder builder = new ProcessBuilder("curl","-k", "-X", "POST","- H","\"Content-Type:application/json\"",
"-d","'{\"COMMAND\":\"DISCSTATUS\",\"USER\":\"PMDC\"}'",
"https://167.254.226.215/DcnWebSvr/DcnSvrCmd");
builder.redirectErrorStream(true);
try {
Process process = builder.start();
InputStream is = process.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line = null;
while ((line = reader.readLine()) != null) {
output.append(line + "\n");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return output.toString();
但是,它没有输出正确的字符串。相反,它似乎将命令识别为某种传输,因为这是我得到的输出:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 40 0 0 100 40 0 164 --:--:-- --:--:-- --:--:-- 165
这只是我一直忽略的一些语法错误吗?我错过了什么?
【问题讨论】: