curl发送post请求带Json参数
1:linux下执行curl命令发送post请求
curl -X POST -H "Content-Type: application/json" -H "referer:http://localhost" http://localhost:8080/test/file/import -d '{"param":"20210608"}'
H表示请求头,-d表示参数
参考案例:
curl -v http://localhost:8080/JsonSendSms -d '{"mobile":"100000000000","password":"111111111","smsID":"12345678999","smscontent":"this is a test2"}' -X POST -H "Content-Type: application/json" -k
说明:
linux下-d后面的参数需要用单引号‘引起来 ,windows下不需要单引号
2:linux下shell脚本中传递动态参数
param="20210608"; curl -X POST -H "Content-Type: application/json" -H "referer:http://localhost" http://localhost:8080/test/file/import -d '{"param":"'${param}'"}'
说明:
shell脚本中变量赋值符左右不能有空格,即上面param变量等号=左右不能有空格。
若参数过长则放到文件中
步骤一:在执行路径下,新建文件如param.json
说明:文件中的内容为json参数内容,无需进行转义
步骤二: 执行命令
curl -X POST -H "Content-Type: application/json" -H "referer:http://localhost" http://localhost:8080/test/file/import -d @param.json
linux下shell脚本中动态传递参数
前言:
我们经常会写shell脚本,并放到linux系统中,执行shell脚本中的命令,远程调用某个http请求,下面讲解一下如何调用,及在shell脚本中如何动态传递参数
步骤一:创建一个task.sh文件,代码如下
task1() { echo "**********demo1**********" curl -X POST -H "Content-Type: application/json" -H "referer:http://localhost" http://localhost:8080/file/import -d '{"param":"'$2'"}' } task2() { echo "********** demo2 **********" curl -X POST -H "referer:http://localhost" http://localhost:8080/file/export } case "$1" in "1") task1 $1 $2;; "2") task2;; esac
步骤二:在linux中进入到task.sh同一目录下,然后执行命令。
示例1:
./task.sh 1 demo.jpg
示例2:
./task.sh 2
下面是shell脚本中读取参数的其中一种方式:
采用 $0,$1,$2..等方式获取脚本命令行传入的参数,值得注意的是,$0 获取到的是脚本路径以及脚本名,后面按顺序获取参数,当参数超过10个时(包括10个),需要使用${10},${11}....才能获取到参数,但是一般很少会超过10个参数的情况。