在BSF预处理器修改请求后,jmeter发送空的http POST正文数据

在BSF预处理器修改请求后,jmeter发送空的http POST正文数据,post,request,jmeter,beanshell,Post,Request,Jmeter,Beanshell,有人知道为什么在我修改请求主体后jmeter会传递空帖子吗 我有一个在正文中包含大量JSON的请求(不幸的是,我不能用它粘贴图像) 我已将BSF预处理器附加到此请求: import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.jmeter.config.Argument; import org.apache.jmeter.config.Arguments; import org.apache

有人知道为什么在我修改请求主体后jmeter会传递空帖子吗

我有一个在正文中包含大量JSON的请求(不幸的是,我不能用它粘贴图像)

我已将BSF预处理器附加到此请求:

import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.jmeter.config.Argument;
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.samplers.Sampler;
import org.apache.jmeter.protocol.http.sampler.HTTPSampler;

Sampler sampler = ctx.getCurrentSampler();
String param = sampler.getArguments().toString();
String replacerMCI = vars.get("vMainCaseId");

Pattern r = Pattern.compile("(?<=mainCaseId\":\")(\\d{2,})");
Matcher m = r.matcher(param);
String paramRep = m.replaceAll(replacerMCI);

Argument arg = new Argument("", paramRep);
Arguments argList = new Arguments();
argList.addArgument(arg);
sampler.setArguments(argList);

代码看起来不错,只需删除以下行:

Sampler sampler = ctx.getCurrentSampler();
作为

  • 类没有“setArguments”方法
  • 有一个预定义的变量
    sampler
    ,它是父sampler的缩写,我想这是您的情况
  • 如果您的脚本遇到任何问题,请查看jmeter.log文件,对于前置和后置处理器,即使它们失败,GUI中也不会显示任何内容


    如果您使用的是BSF语言,则可以添加
    debug()行在测试开始时,Beanshell解释器将把调试信息打印到STDOUT

    Hi-Dmitri!谢谢你的提示。我稍微改变了一下实现。现在我直接使用HTTPArgument,帖子正在发送中,但是。。。我发现了另一个问题。1.邮件在请求正文开头以等号发送。有没有办法从邮件中删除此等号?POST看起来是这样的:={data:;…}您可以将其作为
    arg.setValue(arg.getValue().replaceFirst(“\\=”,”)删除万岁!;-)这么简单。谢谢你的帮助。不幸的是,我不能给予荣誉,因为我没有足够的声望点数。
    
    Sampler sampler = ctx.getCurrentSampler();