我希望使用JMeter中的BeanShell PreProcessor向HTTP请求体发送一个JSON对象。为了对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'有谁能建议上面的代码有什么问题,以及如何解决这些问题?
如有任何建议或解决方案,将不胜感激。
发布于 2017-08-05 19:10:28
obj2保存数据。使用obj2而不是obj1
vars.putObject("jsonData",obj2);用于日志转换toSring
log.info(obj1.toString());发布于 2017-08-07 04:03:05
https://stackoverflow.com/questions/45525005
复制相似问题