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

JMeter Groovy脚本读取响应头值供后续请求使用的问题求助

JMeter JSR223 Groovy 读取响应头参数修复方案

原有代码问题

  • prev.getResponseHeaders()返回值为完整响应头拼接的字符串,而非键值对集合,直接调用each会逐字符遍历
  • 变量名拼写错误:定义变量为headerList,内层遍历错误写为headersList,会触发未定义变量异常
  • 语法错误:if(it.equals("transactionRef")缺少右闭合括号,log.info"Required Header: "it缺少字符串拼接符,直接触发语法解析失败
  • 匹配逻辑错误:响应头每行格式为头名: 头值,直接与transactionRef做全等判断永远为假,无法匹配到目标响应头

修复后可用代码

// 读取前一个请求的全部响应头,按换行分割为单条头记录
def headerLines = prev.getResponseHeaders().split(System.getProperty("line.separator"))
def requiredHeaderValue = null
def targetHeaderName = "transactionRef"

headerLines.each { line ->
    // 跳过空行
    if (line.trim() == "") return
    // 仅分割第一个冒号,避免头值内含冒号时解析异常
    def colonIndex = line.indexOf(":")
    if (colonIndex < 1) return
    
    def headerName = line.substring(0, colonIndex).trim()
    def headerValue = line.substring(colonIndex + 1).trim()
    
    if (headerName == targetHeaderName) {
        requiredHeaderValue = headerValue
        log.info("Required Header ${targetHeaderName} found, value: ${requiredHeaderValue}")
        // 匹配到目标后终止遍历
        return
    }
}

// 将参数存入JMeter变量供后续请求调用
if (requiredHeaderValue != null) {
    vars.put("transactionRef", requiredHeaderValue)
} else {
    log.error("Target header ${targetHeaderName} not found in response headers")
}

使用说明

后续请求需要引用该参数时,直接使用JMeter变量语法${transactionRef}即可,脚本需放置在需要提取响应头的请求之后。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 13:36:02