我喜欢执行像
这样的cURL命令curl -s -XGET 'http://localhost:xxx/h*/_count?q=*&pretty'
在我的java应用程序中(当然是在linux机器上运行)并将结果保存在String中。 怎么做得好? This和this解决方案不起作用。以下是我的尝试和结果,直到现在,基于解决方案并适应我的情况:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.Base64;
import java.util.List;
public class SyncStatus
{
public static void main(String[] args)
{
//Link 1
Process process;
try
{
process = Runtime.getRuntime().exec( "curl -s -XGET 'http://localhost:xxxx/h*/_count?q=*&pretty'");
System.out.println(process.waitFor());
System.out.println(process.getErrorStream());
System.out.println(process.getInputStream());
BufferedReader input = new BufferedReader(new InputStreamReader(process.getInputStream()));
String result="";
String line=null;
while((line=input.readLine())!=null)
{
result+=line;
System.out.println("here: "+line);
}
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
//Results:
//1 (the Errocode)
//java.lang.UNIXProcess$ProcessPipeInputStream@2d3584f9
//java.lang.UNIXProcess$ProcessPipeInputStream@14ad0e9f
//Link 2
System.out.println("Next try:");
List list = new ArrayList();
list.add("curl");
list.add("-s");
list.add("-X");
list.add("GET");
list.add("http://localhost:9200/h*/_count?q=*&pretty");
ProcessBuilder pb = new ProcessBuilder(list);
try
{
pb.redirectErrorStream();
process = pb.start();
System.out.println(process.getErrorStream());
System.out.println(process.getInputStream());
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
//Results:
//java.lang.UNIXProcess$ProcessPipeInputStream@57dd065c
//java.lang.UNIXProcess$ProcessPipeInputStream@6fccaf14
}
}
注意:在shell中评估命令时,我会得到所需的结果。
答案 0 :(得分:0)
最后我自己找到了解决方案。
首先我收缩了命令:curl 'http://localhost:xxxx/h*/_count'
。在这种情况下,它具有相同的结果。
使用以下java代码,我能够阅读“网页”的内容:
URL oracle = new URL("http://localhost:9200/h*/_count");
BufferedReader in = new BufferedReader(new InputStreamReader(oracle.openStream()));
String inputLine;
while((inputLine = in.readLine()) != null)
System.out.println(inputLine);
in.close();