在JAVA中使用getRuntime.exec()进行CURL

在JAVA中使用getRuntime.exec()进行CURL,java,curl,runtime,exec,Java,Curl,Runtime,Exec,当我在cmd中点击卷曲时,它工作了。它返回一个json响应。但是对于下面的代码,输出为空 String output = ""; String command = "curl -k -u snehasis:<API KEY> http://example.com"; try { Process p = Runtime.getRuntime().exec(command);

当我在cmd中点击卷曲时,它工作了。它返回一个json响应。但是对于下面的代码,输出为空

    String output = "";
            String command = "curl -k -u snehasis:<API KEY> http://example.com";
            try {
                Process p = Runtime.getRuntime().exec(command);
                p.waitFor(); 
                BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
                String line = "";
                while ((line = reader.readLine())!= null) 
                {
                output.concat(line + "\n"); 
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }   
    return output;
字符串输出=”;
String command=“curl-k-u snehasis:http://example.com";
试一试{
进程p=Runtime.getRuntime().exec(命令);
p、 waitFor();
BufferedReader=新的BufferedReader(新的InputStreamReader(p.getInputStream());
字符串行=”;
而((line=reader.readLine())!=null)
{
output.concat(第+行“\n”);
}
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}   
返回输出;
不知道我做错了什么。请帮忙?

这里:

output.concat(line + "\n");
返回连接的字符串,但不更改
output
的值

Java字符串是不可变的。世界不会自行改变。你需要改变它们

使用:


你必须用卷发吗?HttpUrlConnection或Apache HttpClient(或另一个Java解决方案)有什么太棘手的问题需要处理吗?如果输出很长,
waitFor
会死锁。使用StringBuilder更好。为什么要一行一行地读呢?@Thilo哦,是的。而且,StringBuilder的字符串也是可变的!
output = output.concat(line + "\n");