当我尝试自定义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));
请尽早帮助我
答案 0 :(得分:0)
根据您的消息,第14行第3列有问题
第14行第3栏的词汇错误。遇到:“a”(97),之后:“\'s”
你的脚本只包含12行,所以我不知道那里有什么失败。我尝试了它,它按预期工作。
关于“尽早”的解决方法,鉴于我们没有足够的心灵感应来猜测脚本中缺失行的错误,这里有一个替代解决方案。我个人试图避免编写脚本,尽可能使用JMeter内置组件,因为这些脚本引擎会产生一些开销。
特别是在您的情况下,您可以在仅JMeter Functions,__longSum()功能的帮助下完成所需操作。
在HTTP标头管理器中定义以下标头:
from-time
,其值为
${__javaScript(${__javaScript(Math.round(new Date().getTime()))},fromTime)}
to-time
,其值为
$ {__ longSum($ {FROMTIME},3599000)}
有关__longSum()
和其他JMeter功能的全面信息,请参阅How to Use JMeter Functions文章系列。