如何在Jmeter的Header中添加令牌?

时间:2020-08-24 07:34:23

标签: jmeter

当我在第一个循环中运行带有Loop Count的线程组2时,它运行良好,但是对于第二次迭代,它失败了,因为在Header中它添加了两倍的Authorization Bearer令牌

我在此采样器内部创建了一个名为“登录请求”的HTTP请求采样器,我添加了BeanShell PreProcessor'

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

它在1次迭代中效果很好,但在第二次迭代中却失败,错误表明标头中有两个授权

2 个答案:

答案 0 :(得分:2)

您不需要任何Beanshell即可

只需添加一个playground link并放入其中即可:

  • 名称:授权
  • 值:不记名$ {Token}

答案 1 :(得分:1)

修改您的代码以调用removeHeaderNamed() function,例如:

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

这样,您将充满信心,每次只有一个Authorization标头。

还请注意,since JMeter 3.1 you should be using JSR223 Test Elements and Groovy language for scripting主要是因为Groovy has much better performance comparing to Beanshell,因此请考虑在下一个可用机会上进行迁移(相同的代码会很好地工作)