我想使用 BeanShell 预处理器将一个 JSON 对象发送到 JMeter 中的 HTTP 请求主体。为了对 JSON 对象建模,我使用了 Java 代码(带有一些业务逻辑)。因此,我创建了一个 BeanShell PreProcessor 并编写了如下 java 代码,
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
String key="testKey";
int lastID=5548;
int totalCount=198;
JSONObject obj1 = new JSONObject();
JSONArray obj2 = new JSONArray();
for (int i=1;i<=totalCount;i++)
{
JSONObject item = new JSONObject();
item.put("taskId", Integer.toString(lastID+i));
item.put("taskOrder",1);
item.put("snapshotTemplateKey",key);
obj2.put(item);
obj1.put("changeControlTasks", obj2);
obj1.put("ccName","Eleven" );
obj1.put("snapshotTemplateKey",key);
}
log.info(obj1);
vars.putObject("jsonData",obj1);
在 HTTP 请求正文中,我尝试按如下方式获取数据,
${jsonData}
使用上面的代码,抛出下面的共享错误
要求:
POST data:
${jsonData}
日志中的错误:
2017/08/06 07:27:10 ERROR - jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval
Sourced file: inline evaluation of: ``import org.json.JSONArray; import org.json.JSONException;
import org.json.JSONOb . . . '' : Error in method invocation: Method info( ) not found in class'org.apache.log.Logger'
任何人都可以建议上面的代码有什么问题以及如何解决这些问题。
任何建议或解决方案也将不胜感激。
最佳答案
obj2 保存数据。使用 obj2
而不是 obj1
:
vars.putObject("jsonData",obj2);
对于日志转换为Sring
log.info(obj1.toString());
关于javascript - 使用 BeanShell 预处理器发送 JSON 对象时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45525005/