import java.util.Base64

// 从JMeter变量中读取请求体(即HTTP Sampler的Body Data)
// 注意:在JMeter中,你可以使用 vars.get("body") 来获取,但更通用的是直接读取 sampler 的内容:
def body = sampler.getArguments().getArgument(0).getValue()

if (body == null || body.trim().isEmpty()) {
    log.warn("JSR223:未检测到请求体内容,请确认 HTTP Sampler 的 Body Data 是否填写。")
    return
}

// Base64编码
def encoded = Base64.getEncoder().encodeToString(body.getBytes("UTF-8"))

// 构造最终 payload
def payloadFinal = "{\"payload\":\"${encoded}\"}"

// 替换HTTP请求体内容
sampler.getArguments().getArgument(0).setValue(payloadFinal)

// 保存变量到JMeter上下文(方便调试)
vars.put("payload_plain", body)
vars.put("payload_base64", encoded)
vars.put("payload_final", payloadFinal)

// 输出到日志
log.info("原始明文payload: " + body)
log.info("Base64编码后: " + encoded)
log.info("替换为最终请求体: " + payloadFinal)
 

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐