如果不是匆匆离别,怎么拼命再见!
因为工作的需求,尝试用Jmeter发送Https的请求,Https涉及到数字签名证书的问题,所以,看起来好像很复杂,但是做起来就是这样简单。
-
打开Chrome浏览器,选择测试目标https的地址,F12,进入开发者模式,并找到"Security"=>"View certificate", 点击进入;
Step1.png -
进入到Certificate页面,并选择"Details",并点击Copy to File按钮...
Step2.png
-
点击Next --> Next 按妞,选择默认方式,并选择你需要导出Certificate文件的路径,并为这个*.cer文件命名。
Step3.png
-
用命令,并按照提示生成keyStore文件。注意:要用administrator的权限运行下面的命令:
命令:keytool -import -alias "myM.store" -file "D:\SoftwareDownLoad\mg.cer" -keystore mg.store
其中, D:\SoftwareDownLoad\mg.cer 是我在第3步导出的cer文件,我命名为mg.cer,并放在了D:\SoftwareDownLoad下。
-
打开Jmeter,点击"Options" => "SSL Manager",导入Step 4 生成的KeyStore(mg.store)文件,并且把http协议改成https
Step5.png - 执行Jmeter脚本,成功!
注意Jmeter里的一点是,对于Http协议Header的设置,如果稍微有错误,就会造成Jmeter接受来自Server的消息出错。一般情况下,没有特殊说明,不要配置Accept的类型,只需要指定你发送请求的Content-Type是什么就可以了,不然,可能因为配置错了Accept的类型,比如,你设置Accpet的类型是application/json, 但是实际收到的是application/hal+json;charset=UTF-8类型,这种简单的错误会导致你在观察结果里发现有无法理解的“Server内部”错误消息。
这里另外有一篇参考文章,如何用Jmeter做HTTPS的请求,步骤详解
还要说一个Jmeter关于timestamp的设置:{__time(,)}默认时间是毫秒,如果对方希望接受到的是Unix timestamp这样的秒级别。
{
"mtId": "TC5000",
"statusType": 0,
"value": 1,
"timestamp":{__time(/1000,)}**,即从毫秒级别转为了秒级别。
网友评论