如何将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后置处理器中添加打印语句,查看请求体或参数内容:
然后查看JMeter日志,确认数据结构是否符合预期。log.info("请求体内容:" + sampler.getArguments().getArgument(0).getValue()) log.info("表单参数:" + sampler.getArguments().argumentsAsMap)
内容的提问来源于stack exchange,提问作者Madhu Manohar
相关产品推荐
相关产品推荐

