jmeter之那些年踩过的坑(持续更新)
一、使用jmeter发送post请求有两种方式,并不是只能通过消息体传递
1.post请求数据为map格式
Map 键、值的形式存储 输出时用“=”链接
{key1=value, key2=value}
当post请求数据为map格式,即参数名、参数值为key-value键值对,请求的参数添加在Parameters参数表中即可
2.post请求数据为json格式
JSON的规则很简单:对象是一个无序的“K–V’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’对”之间使用“,”(逗号)分隔。
规则如下:
1、映射用冒号(“:)表示。名称:值
2、并列的数据之间用逗号(“,”)分隔。名称1:值1,名称2:值2
3、映射的集合(对象)用大括号(“{}”)表示。此格式对应Java中的JsonObject。标准的json可以对应一个JsonObject
下面值1,值2可以是“4”中的格式JsonArray {name:JsonArray,name:JsonArray,name:JsonArray}
{
名称1:值1,
名称2:值2
}
4、并列数据的集合(数组)用方括号(“[]”)表示。此格式对应Java中的JsonArray
[
{名称1:值,名称2:值2},
{名称1:值,名称2:值2}
]
注意:json是一种格式,传输的过程中是String类型的,需要使用对应的方法把其转化成JsonObject对象或JsonArray对象。
使用jmeter时,将json格式的请求数据加入到http请求BodyData中
总结:map格式就类似于键值对,这个很好判断,这一类请求数据需要放在parameters中;json格式是一个完整的对象,最简单的判断方法就是看form data 中是否有{},如果有,并且请求头中有"Content-Type: application/json; charset=UTF-8",那么这就是json格式,请求要放在body data中。
经询问,前端没有map对象,只有json,map属于后台的用语,以上两种都属于json。第一种是因为使用了form
data,浏览器支持的form表单提交。数据类型是:multipart/form-data,以键值对的方式发送数据,会自动构建数据结构,无需手工拼接成json对象。
因此,看到是form 表单提交的json数据,可以将请求写在parameters中,否则用json格式写在body data中(暂且这么理解,后面如有新的体会,再附加)。
未完待续。。。