如何在生成某些HKSTD ID的JMeter中使用Java代码?此ID将在其他http请求采样器中使用

时间:2019-03-04 05:20:48

标签: java jmeter

我正在处理一个项目,该项目将生成hkstd id,并且此ID将由其他HTTP Request Sampler使用。此hkstd ID由开发人员提供的Java代码生成。我的情况是我必须先调用此Java代码,该代码将返回ID,然后在HTTP请求中使用它。我试过在Beanshell Sampler和JSR223 Sampler中调用此Java代码,但没有结果,尽管此Sampler传递了结果而没有任何错误。当我尝试放入log / System.out时,它什么也不打印。我不确定我的代码是否正在运行/调用?

谢谢!

JMeter Sampler for this java code

2 个答案:

答案 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类:

  1. 编译开发人员提供的源代码,并将生成的.jar文件放在JMeter Classpath
  2. 重新启动JMeter以拾取.jar
  3. JSR223 Sampler添加到您的测试计划中
  4. 将以下代码放入“脚本”区域:

    AppendHtstd.main()
    
  5. 就是这样,您的课程将由JMeter执行

    enter image description here

请参阅Apache Groovy - Why and How You Should Use It文章,以了解有关JMeter测试中的自定义脚本的更多信息