我想在jmeter中提取通过post请求发送的参数的值。 我知道使用正则表达式来提取响应值或请求URL但在这里我想提取post请求的值。
我已经彻底how to extract value from request in Jmeter但是没有用。
答案 0 :(得分:1)
不确定为什么你需要它,因为你发送"某事"你应该已经拥有了这样的东西"因此,您不需要提取它,但是在这里:
为了保存第一个参数值(如果使用"正文数据"模式,则保存整个发布数据):
将以下代码放入PostProcessor"脚本"面积:
String request = ctx.getCurrentSampler().getArguments().getArgument(0).getValue();
vars.put("request", request);
您可以根据需要将提取的值作为${request}
进行访问。
澄清:
ctx
- JMeterContext班级实例的简写getCurrentSampler()
- 如果HTTP请求采样器代表HTTPSamplerProxy 有关在JMeter测试中使用Beanshell测试元素中的JMeter和Java API的更多信息,请参阅How to Use BeanShell: JMeter's Favorite Built-in Component指南。
答案 1 :(得分:0)
一种简单的方法是使用JSON Path Extractor。
有
对于你给出的例子
{ "data" : { "name" : "john_doe", } }
'变量名称:YourNewVar' 'JSON路径:$ .data.name' 应该工作,但你可能需要做一些实验。
您可能想要添加一个“调试采样器”(它的标准采样器之一)并将其标题放入$ YourNewVar,以便您可以看到正在提取的内容。
Beanshell和“正则表达式提取器”当然会起作用,但如果你不熟悉它们可能会有点难用。
答案 2 :(得分:0)
我在我的http请求中添加了一个Beanshell PostProcessor,代码如下。
import org.apache.jmeter.config.Argument;
import org.apache.jmeter.config.Arguments;
Arguments argz = ctx.getCurrentSampler().getArguments();
for (int i = 0; i < argz.getArgumentCount(); i++) {
Argument arg = argz.getArgument(i);
String a = arg.getValue();
vars.put("EMAIL",a);
}
说明:我以json的身份收到了我的请求并将其放入EMAIL中。现在我可以在我的其他请求中使用EMAIL作为变量。
然后,我添加了一个jp @ gc Json Path Extractor,并将其应用于Jmeter Varaible。 现在,Email将用作变量,其中包含我的json请求,我可以使用jsonPath Extractor进行提取。