Jmeter 如何以编程方式清除标题管理器

Jmeter 如何以编程方式清除标题管理器,jmeter,Jmeter,我有一个测试计划 Thread-group HttpSampler pre-processor HttpHeaderManager[empty] HttpRequestDefaults[empty] Post-processor 我正在使用预处理器脚本从读取json文件动态地向headerManager添加头。进展顺利 import org.apache.jmeter.protocol.http.control.Header int min = args[0].toInteg

我有一个测试计划

Thread-group
 HttpSampler
  pre-processor
  HttpHeaderManager[empty]
  HttpRequestDefaults[empty]
  Post-processor
我正在使用预处理器脚本从读取json文件动态地向headerManager添加头。进展顺利

import org.apache.jmeter.protocol.http.control.Header
int min = args[0].toInteger()
int max = args[1].toInteger()
int random =  min + (int) (Math.random() * ((max - min) + 1));
// here 'inputjson' referring to slurped json object

 inputjson.Headers.each{
        it.each{    key,value -> sampler.getHeaderManager().add(new Header(key.replace('$random',random.toString()),value.replace('$random',(random+2).toString())));
               }
    }
问题是,如果线程循环计数为3,那么标题集将添加3次

然后我添加了一个后处理器脚本

sampler.getHeaderManager().clear()
这一次初始[loop-1]运行正常,下一个[loop-2]循环是一个无头的清除请求。如何实现,每个请求将只包含一组标题

这将由

在HeaderManager添加部分之前添加
sampler.setHeaderManager(new HeaderManager())


每次都会增加一名新的校长,并使用他。不确定这是否是最好的解决方案,但它是一个有效的解决方案。

不要使用f$%$ing方法
HeaderManager.clear()
我仍然没有得到它,不要在后处理器中这样做,最好在将头添加到头管理器之前在预处理器中这样做

headerMgr = sampler.getHeaderManager();
while(headerMgr.getHeaders().iterator().hasNext()) {
    headerName = headerMgr.getHeaders().iterator().next().getStringValue().split("\\s+")[0];
    headerMgr.removeHeaderNamed(headerName);
}

下面是我的工作示例-
HeaderManager.clear()
不起作用,但按标题名称删除标题完成了它的工作

import org.apache.jmeter.protocol.http.control.Header;
sampler.getHeaderManager().removeHeaderNamed("Authorization");
sampler.getHeaderManager().add(new Header("Authorization", "Bearer " + vars.get("token")));

您可以使用下面的代码以编程方式删除标题-首先,获取标题计数并循环直到标题计数结束

int headers_size = sampler.getHeaderManager().size();
log.info("headers_size: "+ headers_size);
while(headers_size > 0) {
  log.info("header to be removed:"+ sampler.getHeaderManager().get(0));
  sampler.getHeaderManager().remove(0);
  headers_size = sampler.getHeaderManager().size();
}

如果您在
inputjson.Headers.上添加
sampler.getHeaderManager().clear()
,每个{
预处理器中的循环会怎么样?让我检查一下!!!…它的好主意导致我的示例中出现无限循环-必须杀死Java