CURL模拟http请求

         curl 是利用 URL语法在命令行方式下工作的开源文件传输工具。 它被广泛应用在 UNIX、 多种 Linux 发行版中,并且有 DOS 和 Win32、 Win64 下的移植版本。如果你的开发环境是 Mac 或者 Linux, 会自带 curl;如果是 Windows 系统,下载 window 版本(curl-7.33.0-win64-ssl-sspi.zip解压后的curl.exe文件,添加到环境变量中,以便在其他路径中通过cmd窗口使用curl命令): 如果你安装了 git shell,也自带了 curl。

         curl 命令可以在我们开发 Web 应用的时候,模拟前端发起的 HTTP 请求,而且能很好地模拟 POST、 PUT 等其他协议的测试,文件上传测试等用浏览器无法直接测试的也可以使用 curl 命令。

 

特别注意:

       使用windows的cmd串口进行curl命令模拟http请求时,在springboot上接收的中文参数以及响应回cmd窗口的中文字符会乱码,因为windows系统本身的编码是gbk而springboot默认支持的是utf-8。charset只是指定使用utf-8解析你的内容,命令行本身需要在UTF-8环境中编辑。大部分系统环境默认中文以UTF-8编码(如Linux终端),除了Windows

 

1.curl 最简单的命令是 curl URL, 以下输入将返回请求地址的内容:

> curl http://localhost:1001/GetTest/getTest

 

2.通过-i 参数返回,还返回 HTTP 头:

>curl -i -G http://localhost:1001/GetTest/getTest

 

3.通过-H 设直请求的 HTTP 头,比如请求体是 JSON 格式:

>curl -H "Content-Type:application/json" http://localhost:1001/GetTest/getTest

 

URL 通常用双引号防止转义,比如&符号在命令行中表示后台运行, 因此这里必须用引号:

> curl “http://localhost:1001/GetTest/getTest?q=txt&c=1”

 

4.通过-d 参数发起 POST 请求,-d 后面是 POST 的内容:

>curl http://localhost:1001/GetTest/getTest -d "name=tom&password=123"

 

如果 POST 内容需要转义,比如中文字符、空格等,可以使用 --data-urlencode:

>curl http://localhost:1001/GetTest/getTest --data-urlencode "name=汤姆" --data-urlencode "password=123"

注意:

         如果将多个参数用一个--data-urlencode命令发送(curl http://localhost:1001/GetTest/getTest --data-urlencode "name=tom&password=中文"),服务端接收的参数为(name参数:tom&password,password参数:null),所以用--data-urlencode命令时,最好将参数分开传

 

5.-G参数发起一个 GET请求,可以联合-data-urlencode 来转义 URL 参数里的中文特殊符号, data-urlencode 默认是 POST 请求,如果没有 -G 参数, 则会发起一个 POST 请求:

>curl -G http://localhost:1001/GetTest/getTest --data-urlencode "name=汤姆" --data-urlencode "password=123"

 

以上命令对应了一个请求 http://localhost:1001/GetTest/getTest?paraml=value! ¶m2=中文。

 

6.用 -X POST 来申明我们的请求方法,用 -d 参数,来传送我们的参数。通过-X 指定 PUT /POST/DELETE/GET协议, JSON 内容可以用引号括起来:

>curl -X POST "http://localhost:1001/GetTest/getTest" -H "Content-Type:application/json" -d ""dataparams":{ "name":"北京 100 种小吃","type":"food","postDate":"2009-11- 15"}"

@PostMapping(value="/getTest") 
public String method(@RequestBody String dataparams) { 
System.out.println(dataparams); 
return ""; 
}

 

7.使用,-F 上传文件:

>curl http://localhost:1001/GetTest/getTest2 -F "file=@D:\Users\Fitzgerald_Fu\Desktop\123.txt"

这样, 可以通过 name 字段获取提交的名字,通过File 字段获得 profile.jpg 文件。

@RequestMapping(value="/getTest2") 
public String method2(MultipartFile file) { 
//注意controller方法中文件参数名与curl命令中的参数名一致“file” 
String oName=file.getOriginalFilename(); 
System.out.println(oName); 
return ""; 
}

 

你可能感兴趣的:(Restful)