接口测试 (已解决) jmeter bodydata 传送的参数,在请求中显示为空,求解

cbs · 2016年03月29日 · 最后由 mbsunflower 回复于 2019年03月04日 · 8008 次阅读

测试新手,刚刚接触 jmeter , bodydata 传送的参数,在请求中显示为空,求解,问题如图:

  1. http 请求 如图:

2.运行后 - 查看结果树,参数列为空,如图:

3.已添加-http 信息头,如图:

求解结果中为什么为空,有的朋友说可能是 bodydata 里的数据不是 json 数据,但自己不清楚如何转化成 json。。。

共收到 19 条回复 时间 点赞

raw 能看到完整的请求报文吗?响应数据正常吗?

POST 请求啊亲

post 请求,get 请求不带参数

cbs #4 · 2016年03月30日 Author

#1 楼 @leonyao2007
回复的数据是正常的,如图:

但是请求没有传参,所以回复的数据是所有数据。

cbs #5 · 2016年03月30日 Author

#2 楼 @jennyhui
接口文档 给的是 get 请求,get 请求应该也有传参的,是不是我传参的方式不正确。。

cbs #14 · 2016年03月30日 Author

#3 楼 @kesha0
接口文档 给的是 get 请求,get 请求应该也有传参的:例如:筛选特定条件的数据

请求的如果是 json 的格式的话,放到 body data,不然请求的话,会出现请求参数为空的情况,看你的不是 json 请求吧
可以把参数放到 parameters,即可,而且 body data 和 parameters 只能存在一个,不能同时存在请求数据

cbs #8 · 2016年03月30日 Author

#7 楼 @allanwendy
谢谢,已尝试,可以传参并且能够得到想要的数据了,如图:

但是,能不能在 body data 里面传参,例如:
{
"page":1,
"pageSize":10,
"timestamp":1,
"leagueType":'singles',
}
如何才能转换成 json 格式(自己使用网上的 json 格式转换器转换不行,是不是需要编写代码。。),能不能举例说明,因为有的时候需要传些数组参数,如果能在 bodydata 里面传参的话会方便很多。。

json 的请求,JM 需要设置特别的 json 格式才行,不然会出现你上面的问题。网上有很多,你可以百度一下哈

cbs #10 · 2016年03月30日 Author

#9 楼 @allanwendy
百度得到的资料,都是设置请求头,content-Type:application/json ;但我已设置该请求头,应该是你说的 bodydata 里面的数据不是 json 格式,但不清楚该如何转化成 json 格式(网上也没有找到好的资料),求教。。

#8 楼 @xiuqi
json 最后一行参数,去掉逗号,用双引号
在线 JSON 校验格式化工具

cbs #12 · 2016年03月30日 Author

#11 楼 @sanlengjingvv
按照你的说法调整后并校验通过,粘贴到 bodydata,如图:


但是,请求中依然没有 参数显示,相应数据依然显示全部,如图:


那就不是 json 格式的问题了,这该如何解呢?(试过更改 编码方式 、请求协议类型 都没有成功 )

察看结果树 - 请求-raw 里是什么内容

cbs #14 · 2016年03月30日 Author

#13 楼 @sanlengjingvv
raw 里的内容:

如果将 参数传到 parameter 里,raw 如下图:

翻了下 httpclient4 的文档,HttpGet 没有 .setEntity 的方法,java 那个 implementation 不知道是什么库

试试用 curl 发一个带 body 的 GET 到服务器,看下服务器日志,接收到的请求有没有 body,客户端有没有收到对应的数据

cbs #16 · 2016年03月31日 Author

#15 楼 @sanlengjingvv
没有使用 curl 使用的 postman 发送的 get 请求,如图:

后台服务器日志现在看不到,看了下 debug 显示如图:

我先看看 curl 的资料。。

GET /index.html HTTP/1.1
Host: www.example.com

1234

比如 http 报文是这样的,被空行分成上下两部分,下边是 body
url 后接的 ?a=1&b=2 这部分一般叫 query string,而不是 body

1、如果服务器不能正确响应带 body 的请求,只能正确响应 query string 形式的请求,而文档上用的是 body,那应该改文档
2、Jmeter http sample 的 httpclient implementation 应该是不支持 get 方法带 body 的
3、postman get 方法也不能带 body,你图上还是用的 query string

cbs #18 · 2016年03月31日 Author

#17 楼 @sanlengjingvv
谢谢 回复,我的问题解决了,感谢学到很多东西,手动点赞!

cbs 回复

你好,我也遇到了这个问题,我想请问一下,你是怎么解决的

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册