Jmeter getHeaderManager()命令将过多的头添加到请求中

Jmeter getHeaderManager()命令将过多的头添加到请求中,jmeter,jmeter-5.0,Jmeter,Jmeter 5.0,我有一个Jmeter测试,它接受auth令牌头并使用下面的命令添加到http请求中 sampler.getHeaderManager().add(new Header("Authorization","Bearer " + vars.get("BEARER"))); 它在最初的几个请求中工作正常,然后由于以下错误而失败 HTTP Error 400. The size of the request headers is too long 当我检查标题时,它实际上为Auth Token[:O]

我有一个Jmeter测试,它接受auth令牌头并使用下面的命令添加到http请求中

sampler.getHeaderManager().add(new Header("Authorization","Bearer " + vars.get("BEARER")));
它在最初的几个请求中工作正常,然后由于以下错误而失败

HTTP Error 400. The size of the request headers is too long
当我检查标题时,它实际上为Auth Token[:O]添加了大约100多个标题。详情请参阅下文。谁能帮我一下吗


我怀疑,您反复调用
HeaderManager#add
。方法
add
添加标题。而您真正想要做的是替换一个标题。遗憾的是,
HeaderManager
上没有这样做的方法

但你可以模仿它。首先从标题管理器中删除所有名为
Authorization
的标题,然后使用新值重新添加标题。Groovy中的代码如下所示:

import org.apache.jmeter.protocol.http.control.Header
sampler.headerManager.removeHeaderNamed('Authorization')
sampler.headerManager.add(new Header('Authorization', 'Bearer ' + vars.get('BEARER')))
最可能的情况是,您的位置不正确

因此,如果将JSR223预处理器与multiple置于同一级别,它将在其范围内的每个采样器之前执行

因此,您需要使JSR223预处理器成为要修改的采样器头的子级,它应该可以解决您的问题

顺便说一下,您不需要任何脚本,可以使用添加标题