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

如何将POST请求体值存入变量?JSR223后置处理器返回空值

解决POST请求体值存储为空的问题

情况分析

你的代码返回空值,大概率是因为请求体是JSON格式,而sampler.getArguments().argumentsAsMap仅适用于解析表单编码(application/x-www-form-urlencoded)的请求参数。如果是JSON请求体,这种方式无法正确提取值。

解决方案

方案1:解析JSON请求体(针对JSON格式的POST请求)

在JSR223后置处理器中使用以下代码:

// 获取原始请求体
def requestBody = sampler.getArguments().getArgument(0).getValue()
// 解析JSON
def slurper = new groovy.json.JsonSlurper()
def jsonBody = slurper.parseText(requestBody)

// 存储变量,根据你的JSON结构调整键名
vars.put('description', jsonBody.description?.toString())
vars.put('episodeTypeId', jsonBody.episodeTypeId?.toString())
// 其他字段如bvalue同理
vars.put('bvalue', jsonBody.bvalue?.toString())

方案2:修正表单参数提取(针对表单编码请求)

如果你的请求确实是表单编码,检查参数名是否正确,数组类型参数不需要加[0],直接用参数名获取数组后取第一个元素:

def parameters = sampler.getArguments().argumentsAsMap

// 获取数组后取第一个元素
vars.put('description', parameters.get('description')?.get(0))
vars.put('episodeTypeId', parameters.get('episodeTypeId')?.get(0))

验证方法

  • 可以在JSR223后置处理器中添加打印语句,查看请求体或参数内容:
    log.info("请求体内容:" + sampler.getArguments().getArgument(0).getValue())
    log.info("表单参数:" + sampler.getArguments().argumentsAsMap)
    
    然后查看JMeter日志,确认数据结构是否符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 05:07:53