java调用curl发送post或者get请求
废话不多说,直接上代码
下面第一部分为统一的调用方法,简单的java调用命令的方法
/**
* java 调用 Curl的方法
* @param cmds
* @return
*/
public static String execCurl(String[] cmds) {
ProcessBuilder process = new ProcessBuilder(cmds);
Process p;
try {
p = process.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
StringBuilder builder = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
builder.append(line);
builder.append(System.getProperty("line.separator"));
}
return builder.toString();
} catch (IOException e) {
System.out.print("获取线程异常"+e);
}
return null;
}
**
1、get请求
**
public static void getTokent(){
String url = "https://www.baidu.com/"; //这个为url连接,随便写了个连接,一般接口会先调用接口获取token,然后拼接token,post发送请求
String[] cmds = {"curl","X","GET" ,"-k", "-i",""+url+""};
StringBuffer sb = new StringBuffer();
for(int i=0;i<cmds.length;i++){
sb.append(cmds[i]+" ");
}
System.out.println(sb);
String responseMsg=execCurl(cmds);
System.out.println(responseMsg);
}
**
2、post请求
**
public static void getMsg(){
String jsonStr= "{'content':'testtest','creator':'creator''name':'lili'}"; //这里为发送的json串
String url = "https://www.baidu.com/"; //这里为连接发送的url
String accessToken = "123456"; //这一步这个token为上面get获取到的,有些简单的接口不需要获取这个
String[] cmds = {"curl","-H","access-token:{{"+accessToken+"}}" ,
"-H", "Content-Type:application/json",
"-X","POST" ,"-k", "-i",""+url+"",
"-d",""+jsonStr+""}; //超级注意:这个拼接json串的时候不要拼接双引号或者单引号,这个是踩坑提示,因为这个改了好久
StringBuffer sb = new StringBuffer();
for(int i=0;i<cmds.length;i++){
sb.append(cmds[i]+" ");
}
System.out.println(sb);//这个是测试中调试输出你的发送命令航
System.out.println(execCurl(cmds));
}