我正在处理一个项目,该项目将生成hkstd id,并且此ID将由其他HTTP Request Sampler使用。此hkstd ID由开发人员提供的Java代码生成。我的情况是我必须先调用此Java代码,该代码将返回ID,然后在HTTP请求中使用它。我试过在Beanshell Sampler和JSR223 Sampler中调用此Java代码,但没有结果,尽管此Sampler传递了结果而没有任何错误。当我尝试放入log / System.out时,它什么也不打印。我不确定我的代码是否正在运行/调用?
谢谢!
答案 0 :(得分:1)
删除类和main方法,然后输入代码,例如:
import org.apache.commons.codec.digest.DigestUtils;
String contextRoot = "root";
String csrfToken = "a";
String url = "http://www.google.com/root?ta=b&_hkstd=1234c=d";
String urlWithQueryString = removeParamsAndHost(url, contextRoot);
String token = getHashValueOfUrl(urlWithQueryString, csrfToken);
String urlWithToken = findurlWithToken(url, token);
private static String findurlWithToken(String url, String token) {
StringBuilder builder = new StringBuilder(removeParams(url));
if (builder.indexOf("?") == -1) {
builder.append("?");
} else {
builder.append("&");
}
builder.append("_hkstd").append("=").append(token);
;
return builder.toString();
}
private static String removeParamsAndHost(String url, String contextRoot) {
if (url.indexOf("_hkstd") != -1) {
return url.substring(url.indexOf(contextRoot), url.indexOf("_hkstd") - 1);
} else {
return url.substring(url.indexOf(contextRoot));
}
}
private static String removeParams(String url) {
if (url.indexOf("_hkstd") != -1) {
return url.substring(0, url.indexOf("_hkstd") - 1);
} else {
return url;
}
}
public static String getHashValueOfUrl(String url, String csrfToken) {
return DigestUtils.md5Hex(url + csrfToken);
}
您可以添加一个JMeter变量,以后可以使用vars.put
:
vars.put("url", urlWithToken );
答案 1 :(得分:0)
如果您想按原样运行此Java类:
将以下代码放入“脚本”区域:
AppendHtstd.main()
就是这样,您的课程将由JMeter执行
请参阅Apache Groovy - Why and How You Should Use It文章,以了解有关JMeter测试中的自定义脚本的更多信息