使用Beanshell预处理器时JMeter问题,用于设置标题信息

时间:2016-08-23 01:51:12

标签: java jmeter

当我尝试自定义Headers以发送实时时间以获得正确的响应时,我正在尝试使用BSH Pre-processor来设置Header,我看到正在创建的header属性和脚本中应用的值逻辑也在起作用,但是当我运行它时,它并没有返回值。

在控制台中我也在控制台中看到了

的问题
2016/08/23 07:10:05 ERROR - jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval   Sourced file: inline evaluation of: ``import org.apache.jmeter.protocol.http.control.Header;  long fromtime = 14719164 . . . '' Token Parsing Error: Lexical error at line 14, column 3.  Encountered: "a" (97), after : "\'s" 
2016/08/23 07:10:05 WARN  - jmeter.modifiers.BeanShellPreProcessor: 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;  long fromtime = 14719164 . . . '' Token Parsing Error: Lexical error at line 14, column 3.  Encountered: "a" (97), after : "\'s" 
2016/08/23 07:10:06 INFO  - jmeter.util.BeanShellTestElement: To Time is ******1471916406355 
2016/08/23 07:10:06 INFO  - jmeter.util.BeanShellTestElement: fromtime value is ******1471916406355 

我将请求与工作请求进行了比较,看起来完全相同,但不起作用。

如果我做错了,请建议。

BSHPreprocessor可以在下面找到:

import org.apache.jmeter.protocol.http.control.Header;

long fromtime = ${__javaScript(Math.round(new Date().getTime()))}l;
long ttt = 3599000l;
long totime = fromtime + ttt; 

String strLong = Long.toString(fromtime);
log.info("To Time is ******" + strLong);
log.info("fromtime value is ******" + fromtime);

sampler.getHeaderManager().add(new Header("to-time"," " +totime));
sampler.getHeaderManager().add(new Header("from-time"," " +strLong));

请尽早帮助我

1 个答案:

答案 0 :(得分:0)

根据您的消息,第14行第3列有问题

  

第14行第3栏的词汇错误。遇到:“a”(97),之后:“\'s”

你的脚本只包含12行,所以我不知道那里有什么失败。我尝试了它,它按预期工作。

关于“尽早”的解决方法,鉴于我们没有足够的心灵感应来猜测脚本中缺失行的错误,这里有一个替代解决方案。我个人试图避免编写脚本,尽可能使用JMeter内置组件,因为这些脚本引擎会产生一些开销。

特别是在您的情况下,您可以在仅JMeter Functions__longSum()功能的帮助下完成所需操作。

在HTTP标头管理器中定义以下标头:

  1. from-time,其值为

    ${__javaScript(${__javaScript(Math.round(new Date().getTime()))},fromTime)}
    
    1. to-time,其值为

      $ {__ longSum($ {FROMTIME},3599000)}

  2. Header Manager + Functions

    有关__longSum()和其他JMeter功能的全面信息,请参阅How to Use JMeter Functions文章系列。