如何在JMeter中提取POST请求体中displayUnitNo与trialUnitReference的值
JMeter 从POST表单请求体提取指定参数的实现方法
你给出的POST请求是标准的application/x-www-form-urlencoded格式表单,最常用的实现方式是使用正则表达式提取器,操作步骤如下:
步骤1:添加正则表达式提取器
- 右键点击对应HTTP请求,依次选择
添加 → 后置处理器 → 正则表达式提取器 - 基础配置:
- Apply to:选择 主样本
- 要检查的字段:选择 请求数据(如果是从响应结果提取才选响应数据,此处是提取发送的请求体内容,故选请求数据)
步骤2:配置两个参数的提取规则
你可以在同一个正则表达式提取器里配置两个提取规则,也可以分开添加两个提取器,参考配置如下:
提取displayUnitNo%5B0%5D的值
- 引用名称:
displayUnitNo(后续调用该值的变量名,可自定义) - 正则表达式:
displayUnitNo%5B0%5D=([^&]+) - 模板:
$1$ - 匹配数字:
1 - 缺省值:可填
NOT_FOUND,方便提取失败时排查问题
提取trialUnitReference%5B0%5D的值
- 引用名称:
trialUnitReference(后续调用该值的变量名,可自定义) - 正则表达式:
trialUnitReference%5B0%5D=([^&]+) - 模板:
$1$ - 匹配数字:
1 - 缺省值:可填
NOT_FOUND,方便提取失败时排查问题
正则说明:([^&]+)表示匹配除&之外的所有连续字符,刚好匹配表单参数两个&分隔符之间的参数值,适配你给出的请求体格式。
步骤3:验证提取结果
添加调试取样器(路径:添加 → 取样器 → 调试取样器),运行测试计划后,查看调试取样器的响应数据,确认displayUnitNo、trialUnitReference两个变量值符合预期即可。
备选方案:BeanShell后置处理器提取
如果你需要更灵活的自定义处理逻辑,可以使用BeanShell后置处理器实现,参考代码:
// 获取当前请求的请求体内容 String requestBody = ctx.getCurrentSampler().getArguments().getArgument(0).getValue(); // 提取目标参数值 String displayUnitNo = requestBody.split("displayUnitNo%5B0%5D=")[1].split("&")[0]; String trialUnitReference = requestBody.split("trialUnitReference%5B0%5D=")[1].split("&")[0]; // 将结果存入JMeter变量 vars.put("displayUnitNo", displayUnitNo); vars.put("trialUnitReference", trialUnitReference);
内容的提问来源于stack exchange,提问作者user17071521
相关产品推荐
相关产品推荐

