在java中运行curl GET请求会给出退出代码3

时间:2018-02-17 15:49:01

标签: java macos shell api curl

当我在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而不是通过库调用它。非常感谢任何想法。

0 个答案:

没有答案