【发布时间】:2020-04-03 15:33:10
【问题描述】:
我正在尝试使用 JSR223 预处理器中的 groovy 脚本创建一个哈希,然后将其传递给父 HTTP 请求的正文数据,但我不确定我做错了什么。当我在线程组中有一个 HTTP 请求时,它不起作用,但如果它有两个 HTTP 请求,那么它适用于第二个请求。 注意:变量 HASH 是在第一次请求后设置的。虽然我已经尝试将预处理器作为第一个 HTTP 请求的子级,或者在 HTTP 请求之前将其放入线程组,但没有任何效果。
脚本数据:
import java.security.MessageDigest
def requestBody = sampler.getArguments().getArgument(0).getValue()
def data = new XmlParser().parseText(requestBody)
String method=data.method.text()
String token=data.token.text()
String time=data.time.text()
String xyz ='method'+method+'token'+token+'time'+time+'3VDEY-6ZHLH-D27C0-T2ALI'
String hash = MessageDigest.getInstance("MD5").digest(xyz.bytes).encodeHex().toString()
vars.put("HASH", hash)
HTTP 请求正文数据:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<method>ping</method>
<token>-</token>
<time>1575542978</time>
<signature>${HASH}</signature>
<params/>
</root>
测试计划图片
https://drive.google.com/file/d/1vGbwyDo8eWUDL7EDZlK8bdbApxtFpWGT/view?usp=sharing https://drive.google.com/file/d/1Us6tSuRw6MJ__YrnX0tTCKL8S9QSgp-v/view?usp=sharing https://drive.google.com/file/d/10hobprJcga6_y23VWd5U3X1aaSEXzGkb/view?usp=sharing
【问题讨论】:
标签: groovy jmeter preprocessor jsr223