我在谷歌尝试了很多,但没有找到任何解决方案。如果我错过了,那我很抱歉。
在Jmeter中,我在循环中运行相同的请求。对于' n'次数。对于每个请求,我需要提取json响应并将其传递给下一个请求。我能够提取最后一个请求的响应并将其保存到变量,然后传递给下一个请求。我使用了JSON Path Extractor。我还想出了使用BeanShell和JSR223前后处理器提取响应
这里的事情是我需要提取所有先前的响应数据并为下一个请求构建请求主体,而不仅仅是最后一个响应。请
我不想将提取的响应附加到文件,然后将数据传递给文件请求。
Request1 (Requestbody:[]). Response1: Product A
Request2 (Requestbody: [Product A]). Response: Product B
Request3 (Requestbody: [Product A, Product B]. Response Product C
Request4 (Requestbody: [Product A, Product B, Product C]). Response: Product
.. ... .....
Requestn (body: [Product A, Product B, Product C, Product D]....), response: no more products
请有任何想法
谢谢杰克
答案 0 :(得分:0)
如果您需要根据以前的回复构建JSON Array,我建议您考虑使用JSR223 PostProcessor(假定为Groovy语言)和JSONBuilder类。
Groovy内置了JSON支持,因此您可以充分灵活地读取和编写任意JSON结构。
示例:
参考文献:
答案 1 :(得分:0)
HTTP采样器 “BODY DATA”标签只有$ {request}
<强> - &GT; Beanshell预处理器
log.info("Entering preprocessor..");
LinkedList itemsArrayLocal = vars.getObject("itemsArrayLocal");
if ( itemsArrayLocal == null) {
try {
itemsArrayLocal = new LinkedList();
//itemsArrayLocal.add("");
vars.putObject("itemsArrayLocal", itemsArrayLocal );
vars.put("request", "(Requestbody:[" + "" + "]");
}
catch (Exception e) {
e.printStackTrace();
log.info(e);
}
}
else {
String s = "";
for ( int i=0; i < itemsArrayLocal.size(); i++) {
if ( i >= 1) {
s = s + ",";
}
s = s + itemsArrayLocal.get(i).toString() ;
log.info("i=" + String.valueOf(i) + s);
}
log.info("s=" + s);
vars.put("request", "(Requestbody:[" + s + "]");
}
<强> - &GT; Beanshell后处理器
log.info("Entering POST PROCESSOR..");
LinkedList itemsArrayLocal = (LinkedList) vars.getObject("itemsArrayLocal");
String o = prev.getResponseDataAsString().substring(2,10);
//log.info("o=" + o);
try {
log.info("Added..");
itemsArrayLocal.add(o);
log.info("Size=" + String.valueOf(itemsArrayLocal.size()));
}
catch (Exception e) {
e.printStackTrace();
log.info(e);
}