在JAVA中使用getRuntime.exec()进行CURL
当我在cmd中点击卷曲时,它工作了。它返回一个json响应。但是对于下面的代码,输出为空在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);
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");