Linux中模拟GET、POST请求

1.概述

在Linux系统中,可以利用命令来模拟HTTP请求中的GET、POST、PUT等请求,本文将阐述基于curl命令来模拟GET与POST请求,PUT、DELETE等请求与POST类似,同时分享一下本人的踩坑实录。

2.发送GET请求

在利用curl发送get请求时,需要注意携带参数的形式,因为get请求方式是在url中携带参数。若携带的参数是json形式,则请求方式如下:

curl "http://localhost:8080/video/cloud/visual/doorbell/live/isOnline?params='{"deviceNum":"33010201026"}'"

然而,当我信心满满以为上述请求能够正常进行时,这时居然给我上了一课,在接口内部进行JSON转换时,竟然抛出了异常,于是我又利用postman在本地服务重新测试了一遍,没有任何问题。这说明上述方式携带参数的方式是有问题的,在查阅了大量博客后,发现讲的都是大同小异,实践之后也毫无效果。于是咨询大佬,说要进行urlencode转码,恍然觉悟。找了个在线转码工具,对参数进行了转码,转码之后请求方式如下:

curl "http://localhost:8080/video/cloud/visual/doorbell/live/isOnline?params=%7b%22deviceNum%22%3a%2233010201026%22%7d"

转眼便请求成功。事实上,通过查阅API可以发现,可以直接以命令的方式在路径中进行urlencode转码,主要方式如下:

curl -X GET -G --data-urlencode "params={"deviceNum":"33010201026"}" "http://localhost:8080/video/cloud/visual/doorbell/live/isOnline"

3.发送POST请求

发送post请求时,一般会将参数放在body体中,也可能会放在url中,放在url中相对较少。本文也将从上述两种情况来分析:
(1)参数放于body体中

curl "http://localhost:8080/video/cloud/visual/doorbell/config/alarm/ring/update" -H "Content-Type:application/json" -X POST -d '{"deviceNum": "33010201026027028334","alarm":1}'

(2)参数放于url中

curl -d '{"deviceNum": "33010201026027028334","alarm":1}' "http://localhost:8080/video/cloud/visual/doorbell/config/alarm/ring/update"

4.小结

1.在Linux中模拟get请求时,需要进行urlencode转义;
2.本文讲述的模拟get请求时,只阐述在url中携带参数的情况;
3.在模拟post请求时,可以在url或body中传递参数,方式如上,具体指令含义可以查看curl指令集合。

5.参考文献

1.https://blog.csdn.net/thinkerman26/article/details/89026245

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值