背景
curl 命令是一个利用 URL 规则在命令行下工作的文件传输工具。使用一种受支持的协议,从远程服务器传输数据,或将数据传输到远程服务器。默认情况下,已安装在 macOS 和大多数 Linux 发行版上。curl 支持包括 HTTP、HTTPS、ftp 等众多协议,还支持 POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。在进行 web 后台程序开发测试过程中,常常会需要发送 url 进行测试,使用 curl 可以方便地模拟出符合需求的 url 命令。
1.curl 发送 GET 请求:
代码语言:javascript复制#语法格式
curl protocol://address:port/url?args
#示例:
curl http://127.0.0.1:8080/login?admin&passwd=12345678 # 带参数请求,参数用&连接
2.curl 发送 POST 请求:
代码语言:javascript复制#语法格式:
curl -X POST [options] [URL]
# 使用该-F选项时,curl使用的默认Content-Type是“multipart/form-data”,以key=value配对形式
curl -X POST -F 'name=Jason' -F 'email=jason@example.com' http://127.0.0.1:8000/login
# 使用-d选项,可以使用&符号对发送数据进行合并
curl -X POST -d 'name=Jason&email=jason@example.com' http://127.0.0.1:8000/login
# 使用-H选项,指定Content-Type为application/json发送JSON对象
curl -X POST -H "Content-Type:application/json" -d '{"user": "admin", "passwd":"12345678"}' http://127.0.0.1:8000/login # 通过-d指定json data内容
# 文件上传,需在文件位置之前添加@符号
curl -X POST -F 'image=@/home/user/Pictures/wallpaper.jpg' http://example.com/upload
3.curl 发送请求使用变量
get 请求:
代码语言:javascript复制appToken="AT_Lfdi5s7WWu"
time=`date %Y%m%d%H%M`
content="gitee构建成功$time" #content字段的的字符长度限制为10 个
uid="UID_43224fdssdssds"
echo $content
curl "https://wxpusher.zjiecode.com/api/send/message/?appToken=$appToken&uid=$uid&content=$content"
post 请求默认是:Content-Type:application/x-www-form-urlencoded
代码语言:javascript复制appKey="TKtXLPUuGkfaRHA"
appSecret="aArwoGW9dYXBGL79oR8Ns3ZXCkPcGFdb"
suffurl="v1/gghq/launch"
time=`date %s`
sign=`java -Xbootclasspath/a:/home/webuser/gogoal_platform/ggopenapi/lib/snakeyaml.jar -jar ./ggsign/ggsign.jar "$appKey" "$appSecret" "$time" "$suffurl"`
#echo "$sign"
curl -X POST -d "app_key=$appKey&time_stamp=1512612452&sign=U7ETnXEaPUu1jNMq4jKf00fiGSM=" http://ggservice.sandbox.gofund.com.cn/v1/gghq/launch
post 请求采用 json:Content-Type:application/json
代码语言:javascript复制appToken="AT_Lfdi5s7WWumGCudau"
verifyPay=false #是否验证订阅时间,true表示只推送给付费订阅用户,false表示推送的时候,不验证付费,不验证用户订阅到期时间,用户订阅过期了,也能收到。
contentType=1 #消息摘要,显示在微信聊天页面或者模版消息卡片上,限制长度100,可以不传,不传默认截取content前面的内容。
topicIds=["UID_muONkLQuN9FOvsjC3OBBaSo0gTiq"]
uids=["UID_muONkLQuN9FOvsjC3OBBaSo0gTiq"]
time=`date %Y%m%d%H%M`
content="gitee构建成功$time"
summary="gitee构建成功$time"
url="kkkkk"
echo $content
curl -H "Content-type: application/json" -X POST -d {"appToken":"$appToken","verifyPay":"$verifyPay","contentType":"$contentType","topicIds":"$topicIds","uids":"$uids","content":"$content","summary":"$summary","url":"$url"} https://wxpusher.zjiecode.com/api/send/message
代码语言:javascript复制appToken="AT_Lfdi5s7WWumGCudauqIw"
verifyPay=false
contentType=1
topicIds=["UID_muONkLQuN9FOvsjC3OBBaSo0gTiq"]
uids=["UID_muONkLQuN9FOvsjC3OBBaSo0gTiq"]
time=`date %Y%m%d%H%M`
content="$time"
summary="$time"
url="wwww"
echo $content
curl -X POST -H "Content-Type: application/json" -d '{"appToken":"'$appToken'","verifyPay":"'$verifyPay'","contentType":"'$contentType'","topicIds":"'$topicIds'","uids":"'$uids'","content":"'$content'","summary":"'$summary'","url":"'$url'"}' https://wxpusher.zjiecode.com/api/send/message