post请求三种方式

    技术2022-07-11  92

    以zabbix登陆接口做测试,zabbix-api:http://192.168.228.45/zabbix/api_jsonrpc.php

    curl方式请求

    准备工具:yum install -y curl

    [root@zabbix job]# curl -H "Content-Type:application/json" -X POST -id '{ "jsonrpc": "2.0", "method": "user.login", "params": {"user": "Admin","password": "zabbix"}, "id": 1, "auth": null}' http://192.168.228.45/zabbix/api_jsonrpc.php HTTP/1.1 200 OK Date: Wed, 01 Jul 2020 09:38:17 GMT Server: Apache/2.4.6 (CentOS) PHP/5.4.16 X-Powered-By: PHP/5.4.16 Access-Control-Allow-Origin: * Access-Control-Allow-Headers: Content-Type Access-Control-Allow-Methods: POST Access-Control-Max-Age: 1000 Content-Length: 68 Content-Type: application/json {"jsonrpc":"2.0","result":"08f47ee4fa9d55b0928abcd637d9e00e","id":1}[root@zabbix job]# [root@zabbix job]# curl -H "Content-Type:application/json" -X POST -id '{"jsonrpc": "2.0","method": "user.login","params": {"user": "Admin","password": "zabbix"},"id": 1,"auth": null}' http://192.168.228.45/zabbix/api_jsonrpc.php

    fiddler方式请求

    下载安装fiddler: https://www.telerik.com/fiddler 打开组合器输入对应的api地址

    post请求方式输入对应的http信息头:Content-Type: application/json 参数:{"jsonrpc": "2.0","method": "user.login","params": {"user": "Admin","password": "zabbix"},"id": 1,"auth": null}

    点击执行即可查看post请求结果: 此时就能看到json格式返回的zabbix用户登录密钥口令

    jmeter方式请求

    下载安装jmeter工具: https://jmeter.apache.org/download_jmeter.cgi jmeter下载官网tar包即可: apache-jmeter-5.3.tgz windows,linux均可使用(均需要jdk环境) 打开jmeter,右击测试计划添加线程组 右击线程组添加一个取样器-----HTTP请求任务 http请求任务填入对应的参数:

    这段json参数是取zabbix host主机信息的测试参数 { "jsonrpc": "2.0", "method": "host.get", "params": { "output": [ "hostid", "host" ], "selectInterfaces": [ "interfaceid", "ip" ] }, "id": 2, "auth": "e54c3ed48dec483879d3e7b2dc26a640"}

    右击线程组–添加—配置元件----http信息头管理器: “Content-Type:application/json” 线程组----添加----监听器(结果输出工具)—查看结果树: 接着回到http请求点击上方播放按钮开始任务: 此时即可通过观察结果来查看对应的调用结果是否成功: 在linux服务器我们可以通过这个小东西进行压力测试 首先我们在dashboard ui 图形化界面测试是否可以调用成功 测试前我们可以设置本次测试需要运行的次数、并发次数、调度器一共需要执行测试的时间(一般五分钟的并发次数较为稳定、准确) 然后将其保存为运行脚本文件 http-zabbix-login.jmx 首次保存即可直接点击上方的保存按钮,另存为可以点击另存为: 将其上传至linux服务器机器:

    <intProp name="LoopController.loops">-1</intProp> 循环次数:-1永远循环 </elementProp> <stringProp name="ThreadGroup.num_threads">100</stringProp> 并发数 100 <stringProp name="ThreadGroup.ramp_time">3</stringProp> 3秒之后开始每秒100次并发请求,前三秒的每秒请求为 100/3次 <boolProp name="ThreadGroup.scheduler">true</boolProp> <stringProp name="ThreadGroup.duration">30</stringProp> 持续执行30s jmeter -n -t http-zabbix-login.jmx -l http-zabbix-login.jtl -n 面图形化界面执行 -t 指定执行脚本文件 http-zabbix-login.jmx -l 输出结果文件 http-zabbix-login.jtl [root@zabbix job]# ./jmeter.avg 请输入要执行的脚本文件 jmx 文件全称, 与 jtl 输出结果文件全称: eg : http-zabbix-login.jmx http-zabbix-login.jtl *** 请输入要执行的脚本文件 jmx 文件全称, 与 jtl 输出结果文件全称: eg : http-zabbix-login.jmx http-zabbix-login.jtl Please input a jmx---filename1:http-zabbix-login.jmx Please input a jtl---filename2:http-zabbix-login.jtl Creating summariser <summary> Created the tree successfully using http-zabbix-login.jmx Starting standalone test @ Wed Jul 01 18:13:57 CST 2020 (1593598437817) Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445 持续运行时间 TPS(并发)请求数 平均请求时间(Avg ms) summary + 19 in 00:00:02 = 10.1/s Avg: 98 Min: 51 Max: 376 Err: 0 (0.00%) Active: 1 Started: 2 Finished: 1 summary + 282 in 00:00:26 = 10.7/s Avg: 85 Min: 49 Max: 891 Err: 0 (0.00%) Active: 0 Started: 4 Finished: 4 summary = 301 in 00:00:28 = 10.7/s Avg: 85 Min: 49 Max: 891 Err: 0 (0.00%) Tidying up ... @ Wed Jul 01 18:14:26 CST 2020 (1593598466603) ... end of run this is tpsdata avg : 10.50 平均TPS数值 this is avgdata avg (ms) : 89.33 this is avgdata avg (s) : .0893 平均请求响应时间(s) 上为自己写的一个求平均值的小脚本: [root@zabbix job]# cat jmeter.avg #!/bin/bash echo "请输入要执行的脚本文件 jmx 文件全称, 与 jtl 输出结果文件全称: eg : http-zabbix-login.jmx http-zabbix-login.jtl" echo -e "\033[33;40m *** 请输入要执行的脚本文件 jmx 文件全称, 与 jtl 输出结果文件全称: eg : http-zabbix-login.jmx http-zabbix-login.jtl \033[0m" read -p "Please input a jmx---filename1:" jmx read -p "Please input a jtl---filename2:" jtl jmeter -n -t $jmx -l $jtl &> ./jmeter.resful #jmeter -n -t http-zabbix-login.jmx -l http-zabbix-login.jtl &> jmeter.resful cat ./jmeter.resful gawk '{ print $7 }' ./jmeter.resful | grep s | awk -F "/" '{ print $1 }' > ./tps gawk '{ print $7,$9 }' ./jmeter.resful | grep s | awk '{ print $2 }' > ./avg tpsdata=`gawk '{ a += $1 }END { print a }' ./tps` avgdata=`gawk '{ a += $1 }END { print a }' ./avg` wl=`cat ./tps |wc -l` echo "this is tpsdata avg : `echo "scale=2; $tpsdata / $wl" | bc`" echo "scale=2; $tpsdata / $wl" | bc > ./tpsdata echo "this is avgdata avg (ms) : `echo "scale=2; $avgdata / $wl" | bc`" avgs=`echo "scale=2; $avgdata / $wl" | bc` echo "this is avgdata avg (s) : `echo "scale=4; $avgs / 1000" | bc`" echo "scale=4; $avgs / 1000" | bc > ./avgdata

    Processed: 0.010, SQL: 9