这是我看到的错误。
ASR 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(),any(), dump()
这是导致它的行:
def callbackUriMatch = (redirectQuery =~ /(?<=callbackUri=).*(?=&)/)[0]
答案 0 :(得分:1)
您的正则表达式找不到匹配项,并且匹配器组0未初始化。您需要使用更安全的正则表达式,并在尝试访问任何组之前始终检查是否存在匹配项:
def redirectQuery = "&callbackUri=someValue"
def callbackUriMatch = redirectQuery =~ /(?<=[&?]callbackUri=)[^&]*/
if (callbackUriMatch) {
println callbackUriMatch.group()
}
请参见Groovy demo
在这里,callbackUriMatch
是java.util.regex.Matcher
对象。使用if (callbackUriMatch)
,检查是否找到匹配项,如果有匹配项,则可以访问整个匹配项callbackUriMatch.group()
。
模式详细信息
(?<=[&?]callbackUri=)
-当您要获取查询参数值时,应在其前面加上&
或?
,然后将您的键值和=
匹配,然后模式用后向构造包装,该构造不会将其匹配的文本添加到匹配值中[^&]*
-与&
以外的0个或多个字符匹配的否定字符类。