jmeter Beanshell PostProcessor删除标头抛出异常

run*_*sun 0 testing jmeter

当我使用 BeanShell PostProcessor 删除 header\xef\xbc\x8c 时,出现问题\n我的代码:

\n\n
\nimport org.apache.jmeter.protocol.http.control.Header; \n\nsampler.getHeaderManager().removeHeaderNamed("Authorization");\n
Run Code Online (Sandbox Code Playgroud)\n\n

例外:

\n\n
\n2017/05/18 15:24:52 ERROR - jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval   Sourced file: inline evaluation of: ``import org.apache.jmeter.protocol.http.control.Header;   sampler.getHeaderManage . . . \'\' : Attempt to resolve method: getHeaderManager() on undefined variable or class name: sampler \n\n2017/05/18 15:24:52 WARN  - jmeter.extractor.BeanShellPostProcessor: Problem in BeanShell script org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval   Sourced file: inline evaluation of: ``import org.apache.jmeter.protocol.http.control.Header;   sampler.getHeaderManage . . . \'\' : Attempt to resolve method: getHeaderManager() on undefined variable or class name: sampler \n
Run Code Online (Sandbox Code Playgroud)\n\n

来人帮帮我

\n

Dmi*_*i T 5

  1. 您在后处理器中没有sampler简写,如果您需要从前一个采样器中删除标头,相关代码应如下所示:

    ctx.getCurrentSampler().getHeaderManager().removeHeaderNamed("Authorization");
    
    Run Code Online (Sandbox Code Playgroud)
    • ctx是JMeterContext类实例的简写
    • 请注意,后处理器是在请求之后执行的,因此请确保您的实现与您想要实现的目标一致
  2. 如果您需要在请求之前删除标头,请考虑使用预处理器。在这种情况下,您将能够使用sampler简写
  3. 我建议考虑使用JSR223 测试元素Groovy 语言作为 Beanshell 的替代品,因为 Groovy 的性能要好得多,因为它更符合 Java 标准。