当我在shell上运行以下命令时,它会给出预期的JSon输出(我正在使用macOS)。
curl -X GET -H 'Content-Type: application/json' -H 'Authorization: Basic MYKEY’ -i 'http://MYAPI’ --data ‘MYBODY’
但如果我使用Java的Runtime.getRuntime()。exec(下面的代码)做同样的事情,它只返回一个退出代码3(格式错误的URL,根据CURL文档)。
import java.io.BufferedReader;
import java.io.InputStreamReader;
void runCommand("curl -X GET -H 'Content-Type: application/json' -H 'Authorization: Basic MYKEY’ -i ‘http://MYAPI’ --data ‘MYBODY’”) {
String s;
Process p;
try {
p = Runtime.getRuntime().exec(command);
BufferedReader br = new BufferedReader(
new InputStreamReader(p.getInputStream()));
while ((s = br.readLine()) != null) {
System.out.println("line: " + s);
}
p.waitFor();
System.out.println("exit: " + p.exitValue());
p.destroy();
} catch (Exception e) {
System.out.println("ERROR");
}
}
我尝试使用相同的代码在HTML网页(google.com)上运行curl,这非常有效。我在这做错了什么? 请注意,API服务器有一些限制,迫使我在命令行上使用curl而不是通过库调用它。非常感谢任何想法。