Jmeter:如何在单个请求中传递数组值?

时间:2012-12-08 18:37:14

标签: java javascript jmeter

我必须做什么:
1.从之前的回复中提取所有客户ID 2. 随机播放所有ID 3.在一个请求中传递所有ID。 (如:custPref - 9768,7651,3215,....)

我使用正则表达式(set match no。= -1)将所有客户id放在一个变量(custID)中

通过使用For Each控制器,我可以在一个请求中传递一个客户ID 但是现在我必须在一个请求中传递所有客户ID,以便在用逗号分隔值对客户ID进行洗牌后设置客户的首选项。

此外,客户ID的数量未修复因此无法将变量用作$ {custID} _g1,$ {custID} _g0 ...

您能否建议以任何方式对客户ID进行随机播放,并在一个请求中传递所有ID。

2 个答案:

答案 0 :(得分:3)

提示:您可以获得多个客户ID using custID_matchNr

因此,您的完整Beanshell脚本可能如下所示:

import java.util.ArrayList;
import java.util.Collections;

ids = new ArrayList();
idCount = Integer.parseInt(vars.get("custID_matchNr"));
for (int i=0; i<idCount; i++){
  ids.add(vars.get("custID_" + String.valueOf(i+1)));
}

Collections.shuffle(ids);

builder = new StringBuilder();
for (String id: ids){
  builder.append(id);
  builder.append(",");
}
builder.deleteCharAt(builder.length()-1);
vars.put("custPref", builder.toString());

答案 1 :(得分:0)

如果你需要通过jmeter将int数组传递给web方法,或类似的东西,这就是解决方案!

  1. 在http请求中使用Post Body。

  2. 在帖子中你需要传递json! 像这样: {“language”:“en”,“translationIds”:[10254,3071,3072,3073,3074,3075,3076,3077,3078,3079,3080,3081,3082,3083,3084,3085,3086,3087, 3088,3089,3090,3091,3092,3093,3094,3095,3096,3097,3098,3099,3100,3101,3102,3103,3104,3105,3106,3107,3108,3109,3110,3111,3112, 3113,3114,3115,3116,3117,3118,3513]}“

  3. 您需要HTTP标头管理器:Content-Type application / json

  4. Picture 1

    Second image

    (CODE) 4.最后,您需要在包含该方法的类上放置[ScriptService]属性(C#)。