JSR223脚本中的问题,提供者处理器 javax.script.ScriptException:groovy.lang.MissingMethodException:没有方法签名:org.apache.jmeter.threads.JMeterVariables.put()适用于参数类型:(java.lang.String,java.util.regex.Matcher )值:[callbackUri,java.util.regex.Matcher [pattern =(?<= callbackUri =)。*(?=&)region = 0,537 lastmatch =]] 可能的解决方案:put(java.lang.String,java.lang.String),get(java.lang.String),putAt(java.lang.String,java.lang.Object),wait(),dump(),任何()
常规代码错误。错误像这样“ Script144.run(Script144.groovy:2)〜[?:?]”
尝试从上一个GET请求的响应中获取一个值。
def redirect = prev.getRedirectLocation()
def redirectQuery = new URI(redirect).query
def callbackUriMatch = (redirectQuery =~ /(?<=callbackUri=).*(?
=&)/)[0]
vars.put("callbackUri", callbackUriMatch)
callbackUri应该从上一个调用中获取值。但是它没有这样做。
答案 0 :(得分:2)
此“行”的主要点是=~
,它是Groovy的match operator,它将Regular Expression应用于重定向查询字符串,以便从中获取callbackUri
参数它。
尝试修改此行以删除其中的换行符:
def callbackUriMatch = (redirectQuery =~ /(?<=callbackUri=).*(?=&)/)[0]
如果这没有帮助,请尝试通过putting log.info()
语句添加一些日志记录,以将变量值打印到 jmeter.log 文件中,例如:
def redirect = prev.getRedirectLocation()
log.info('Redirect: ' + redirect)
def redirectQuery = new URI(redirect).query
log.info('Redirect query: ' + redirectQuery)
def callbackUriMatch = (redirectQuery =~ /(?<=callbackUri=).*(?=&)/)[0]
vars.put("callbackUri", callbackUriMatch)
这样,您将能够看到一些匹配器的源数据,并获得有关如何解决此问题的线索。如果您自己无法执行此操作,请使用实际的重定向URL更新问题,以便我们提出正确的正则表达式。