如何使用curl命令发送请求

1: 发送Json格式

 curl命令一般在电脑的终端执行,上述代码中的“http://localhost:8080/cnd_inke/qc/v2/inke”为你要请求的目标地址,-H后面为请求头,可以添加多个,curl默认的请求方式是GET,我们要使用POST的话,就得加上“-X POST”,然后关键的来了,我们的请求体,也就是request一般不是json格式的嘛,此时只需要添加-d后,加上单引号,单引号里面添加花括号,然后json格式的key-value添加进去即可。

如果请求体放在了文件中,比如某个json文件中

 

  • List item
  • @后面应该是目标json文件的路径。
  • –data(即-d)指定的参数必须符合json格式
  • -H 指定headers头的时候必须单个使用,即一个-H指定一个头字段信息
  • curl命令所有的符号都得使用英文符号,不能出现汉语符号。

2:发送form表单请求:
一. 首先,最简单的情况是我们只需要提交一个不带文件上传的表单,这种情况下,只需要在curl中使用–data(注意是–不是-)或者它的缩写-d即可。
curl -d “key=value&key=value” “url” 或者 curl --data “key=value&key=value” “url”
注意:如果键值对只有一个的话,可以不写双引号,但是如果有多个键值对,必须加上双引号,键值对之间用&连接
现在假设我们有一个登陆表单,它看起来可能是这样的

那我们的curl就应该写成这样

 

如果登陆后网页被重定向,而我们想追踪这个重定向的话可以加上-L参数(L必须大写),表示追踪重定向

二. 稍微复杂的情况:现在我们希望进行一些必须在登陆前提下的post请求,那就需要先保存我们之前的成功登陆的cookie信息,然后再携带登陆信息进行post请求
1.保存登陆cookie信息到文件可以通过以下2个选项中的任意一个实现
-c :保存cookie信息
-D:保存整个header信息,包括cookie
示例:

运行后会在你执行指令的目录下生成一个cookie.txt文件,当然你也可以指定该文件的创建路径,相对路径绝对路径皆可(如cookie.txt可以改成 /path/cookie.txt)
2.携带登陆信息进行post请求需要使用-b选项
-b:指定使用哪个文件
示例:

三. 模拟表单文件上传,相当于form表单中method="POST"和enctype="multipart/form-data"的情况
这个时候就需要用到-F选项了

我们想提交一个名为hellocurl.zip的文件,该文件在我们指令所在的根目录下。

那我们的curl就是这样的

如果上传的文件不止一个,可以写多个-F “key=@value”

再来看一个更加贴近实际的情况:很多时候,我们的表单还会包含许多其他表单元素,如text,checkbox,select等等
现在我们在上面表单的基础上加入更多元素,变成下面这样:

同时我们想提交hellocurl.zip文件, 这时候我们可能会想到加上-d
特别注意,这个时候我们不能同时使用-d和-F,这2个选项在curl中是两种方式的请求,-d为application/x-www-url-encoded方式发送post请求,而-F为multipart/form-data方式,
如果在一次curl中同时使用-d和-F选项会报Warning: You can only select one HTTP request!的警告,导致指令无法执行,这种情况下,现在网上很多给出的解决方案是通过增加-F的方式来解决
即:

但是我在一个spring mvc的项目中测试这个方法的时候发现,由于拿不到filename的值,无法绕过服务器端的验证,导致提交失败,如果你也碰到类似的情况,可以尝试下以下解决方法:

具体到当前的问题我们的curl就是:

该方法亲测通过,并且仍然是post的提交方式。
其他一些实用选项:
-v:查看请求的整个完整的过程
-i:查看请求头信息
-o:保存响应结果到指定路径的文件中,如: curl -o tmp.txt http://www.csdn.net #保存响应到tmp.txt

posted @   逐梦北京  阅读(1803)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2020-06-28 linux网络测试命令
点击右上角即可分享
微信分享提示