如何在 Beanshell 预处理器中获取 HTTP POST 请求正文?

ami*_*ula 0 jmeter beanshell

我在使用 jmeter 时遇到一些问题。这是我的用例,我使用 CSV 数据源参数构建 HTTP POST 请求,请求正文从 CSV 列读取

在此输入图像描述

其中包含一些占位符,例如${source_id}

在此输入图像描述

我想用 jmeter 参数替换这些占位符,我通过 regex/json 提取器初始化这些参数(从最后一个 PUT 请求的响应中读取)。我尝试在 CSV 文件中使用 jmeter 变量名称,但变量值没有被替换。我想我将不得不使用 beanshell 预处理器来修改 HTTP POST 请求正文。任何人都可以帮助我获取 HTTP POST 请求正文的方法吗?

Dmi*_*i T 5

就像是

String requestBody = sampler.getArguments().getArgument(0).getValue();
Run Code Online (Sandbox Code Playgroud)

应该有帮助。

sampler是父采样器类实例的简写,在您的情况下它将是HTTPSamplerProxy,请参阅 JavaDoc 了解所有可用的方法和字段。


我建议考虑迁移到JSR223 预处理器Groovy语言,因为它比 Beanshell 更快且消耗的资源更少。有效的 Beanshell 代码将是有效的 Groovy 代码,因此您应该能够转换为 JSR223 元素,无需进行任何更改或只需进行最少的更改。有关更多详细信息,请参阅Groovy 是 New Black文章。