You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Apache JMeter请求中编写字段条件控制逻辑?

实现HTTP请求字段动态包含的方法(debitccy5字段非Null时才加入)

方法1:用Groovy函数直接构造请求体(推荐)

如果你的请求是JSON格式,直接在HTTP请求的「Body Data」中使用__groovy()函数动态生成内容:

${__groovy(
    def reqData = [:];
    // 先添加固定需要的字段
    reqData.put("field1", vars.get("field1"));
    reqData.put("field2", vars.get("field2"));
    // 处理debitccy5字段
    def debitVal = vars.get("debitccy5");
    if (debitVal != null && debitVal.trim() != "") {
        reqData.put("debitccy5", debitVal);
    }
    new groovy.json.JsonBuilder(reqData).toPrettyString();
)}

这段脚本会自动判断debitccy5的变量值:非空时加入请求体,为空或null时自动忽略该字段。

方法2:JSR223预处理器+模板拼接(适合复杂场景)

  1. 先定义不含debitccy5的基础请求模板,存入变量base_request:
    {"field1":"${field1}", "field2":"${field2}"}
    
  2. 在HTTP请求前添加「JSR223 PreProcessor」,写入以下脚本:
    def baseBody = vars.get("base_request");
    def debitVal = vars.get("debitccy5");
    def finalBody = baseBody;
    // 仅当字段值非空时,拼接字段到请求体
    if (debitVal != null && debitVal.trim() != "") {
        finalBody = baseBody.substring(0, baseBody.length() - 1) + ", \"debitccy5\":\"${debitVal}\"}";
    }
    vars.put("final_request", finalBody);
    
  3. 在HTTP请求的「Body Data」中引用最终请求体:${final_request}

关于If Controller无效的说明

If Controller的作用是控制整个采样器是否执行,无法直接修改请求体内部的字段是否存在,所以不适合你的场景,改用上面两种方法即可实现需求。

内容的提问来源于stack exchange,提问作者Samyukta Roy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 08:08:31