【接口测试】【Jmeter】Parameters与BodyData的使用区别以及关于Http请求的Content-Type

合作方参照我方原有接口文档,编写的接口,用原有的测试脚本测试,几乎所有put请求会报450参数不合法的错误(450自定),而用合作方附带的python接口脚本则put请求基本能通。确认过参数,路径,请求方法,无法找到原因。后突然想到改变一下Jmeter发送请求方式,结果原先450参数不合法的问题消失了。leader之前也建议用抓包工具分别抓取Jmeter和python脚本的请求,比对一下发送的参数。

原先误以为,不管是在Parameter还是BodyData发送请求参数,都是一样的,不知道以不同方式发送会形成不同数据类型,而什么数据格式合法又受服务器端代码制约(合作方没有说明要以什么类型发送数据)。

一开始是按旧有的测试脚本,稍作更改发送put请求,结果是450.在这里插入图片描述在这里插入图片描述
换成Parameter中发送参数或者更改BodyData 中的数据构成方式,则结果变为200,ok, 如下所示:
在这里插入图片描述
经了解,Parameters和BodyData发送请求参数有如下区别:

  • 在JMeter使用Parameters发送参数时,Content-Type默认为application/x-www-from-urlencoded。查看Jmeter请求头或抓包所得,皆如图所示在这里插入图片描述
  • 在JMeter使用Body Data消息体数据时,若输入参数是json数据格式,Content-Type只能传application/json;输入的数据是键值对的形式(如:type=username&accounts=jmUser05&pwd=123456),Content-Type只能传application/x-www-from-urlencoded。在这里插入图片描述然而实际上,当在BodyData 中使用键值对形式时,即使不设置http请求头为application/x-www-from-urlencoded,依然能够成功发送请求并返回200 OK,而此时显示的发送数据类型为text/plain, 这不知道是不是服务器端代码不严谨导致。

资料参考:https://www.cnblogs.com/Sharing-knowledge/p/17205573.html

关于Content-Type,学习了下http://t.csdn.cn/iGAHm此篇博文有比较详细的比对和介绍:

  • request header中的Content-Type 告诉服务器发送的参数是什么类型。response header中的Content-Type告诉客户端返回的参数类型。
  • Content-Type 规定了请求体中的数据编码格式,针对不同编码格式的数据,服务端的解析方式不同。

总结一下,测试接口时应弄清服务端支持的参数类型,进而在使用Jmeter或其他工具进行测试时能选择正确的方式以及做好request header 设置。如果无法弄清,可自行尝试变换参数类型发送请求。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值