我为此编写的代码如下:
try {
byte []
samplerdata = ctx.getPreviousResult().getResponseCode();
String
samplerdatastring = new String(samplerdata, "UFT-8");
vars.put("samplerdata", samplerdatastring);
vars.get(samplerdata);
int
matches = StringUtils.countMatches(samplerdata, "200");
vars.put("matchescount", String.valueOf(matches));
vars.get(matchescount);
} catch (Throwable
ex
)
{
log.error("Error in Beanshell", ex);
throw ex;
}
导致如下错误:
jmeter.util.BeanShellInterpreter:调用bsh方法时出错:eval源文件:内联评估:``try {byte [] samplerdata = ctx.getPreviousResult()。getResponseCode(); Stri。 。 。 '' :TargetError
任何人都可以帮我解决这个错误。
答案 0 :(得分:0)
尝试如下:
import org.apache.commons.lang.StringUtils;
try {
String
samplerdata = ctx.getPreviousResult().getResponseCode();
vars.put("samplerdata", samplerdata);
vars.get("samplerdata");
int
matches = StringUtils.countMatches(samplerdata, "200");
vars.put("matchescount", String.valueOf(matches));
log.info(vars.get("matchescount"));
} catch (Throwable
ex
)
{
log.error("Error in Beanshell", ex);
throw ex;
}
解决了代码中的问题:
getResponseCode
返回String,因此请将其存储在String
中,但不能存储在byte[]
byte[]
转换为String
StringUtils
matchescount
时,我们应该在vars.get
中将其保留为双引号。同样适用于samplerdata
您可以使用prev返回SampleResult对象而不是ctx。
现有:
String
samplerdata = ctx.getPreviousResult().getResponseCode();
您也可以尝试:
String
samplerdata = prev.getResponseCode();