关于JMeter HTTP 请求的详细说明。
1. 在哪里添加 HTTP 请求
先创建线程组:右键测试计划 -添加 -线程(用户) - 线程组。
再在线程组下添加HTTP 请求取样器:右键线程组 - 添加 - 取样器 - HTTP 请求。
建议同时添加HTTP请求默认值、HTTP头管理器、HTTP Cookie管理器等配置元件,来减少在每个取样器中的重复设置。
2. 界面字段
基本选项卡
协议:填写 http 或 https,不填则默认为 http。
服务器名称或IP:只填域名或 IP,不要带 http://,如 api.zmtests.com。
端口号:非标准端口才需要填,如 8080;标准 http 用 80,https 用 443 时可留空。
方法:GET、POST、PUT、DELETE、PATCH 等。
途径:资源途径,以 / 开头,如 /api/v1/login。不建议在此处拼写查询参数。
内容编码:请求体的字符编码,一般填 UTF-8,尤其当发送包含中文的 JSON 时。
参数和消息体
参数方式:适合GET的查询参数或POST的 application/x-www-form-urlencoded 表单。点击添加逐行填写名称和值即可,参数会被自动URL编码。
消息体数据:用于发送任意请求体,如 JSON、XML。当此处填入内容后,上方的Parameters表一般会被忽略(除非方法为 GET、DELETE 等不支持 body 的方法)。
发送JSON时,必须配合HTTP信息头管理器添加 Content-Type: application/json。
文件上传:可模拟表单上传。需要填写文件途径、参数名称(对应 input 的 name 属性)和 MIME 类型(如 image/png)。文件建议使用绝对途径。
高级选项卡
客户端实现:一般保持默认的 HttpClient4 即可。
超时设置:可分别设置连接超时、响应超时(单位毫秒),用于防止请求卡死。
从HTML文件中获取所有内含资源:勾选后,JMeter 会像浏览器那样分析 HTML,并自动下载图片、CSS、JS 等内嵌资源,适合模拟完整页面加载。
并行下载:配合上一个选项,可设置并行下载的数量。
对POST使用multipart/form-data:勾选后,即使只填了参数,也会以multipart方式发送;如果设置了文件上传,则自动变为multipart。
和浏览器兼容的头:一般关闭,由HTTP头管理器统一控制,避免自动添加多余的头。
3. 场景配置示例
GET请求带查询参数
方法选 GET,途径填 /search,在参数表中添加:
q = JMeter教程
page = 1
请求URL: /search?q=JMeter%E6%95%99%E7%A8%8B&page=1。
POST JSON 请求
方法选POST,路径填 /api/login,消息体数据填入:
json
{"username":"admin","password":"123456"}
并在线程组下添加 HTTP信息头管理器,设置 Content-Type 为 application/json。
POST 表单(application/x-www-form-urlencoded)
方法选 POST,途径填 /login,在参数表中添加:
username = admin
password = 123456
无需额外设置 Content-Type,JMeter 会自动添加。
文件上传
方法选 POST,在 文件上传 区域添加一行:
文件途径:/data/avatar.png
参数名称:file
MIME 类型:image/png
如果还需要其他表单字段,可以在Parameters中继续添加,JMeter会自动合并为 multipart/form-data。
4. 配套元件
HTTP请求默认值
统一设置协议、服务器、端口、途径前缀,之后所有 HTTP 请求只需填写相对途径,方便批量维护。
HTTP信息头管理器
用于添加如 Authorization、Content-Type、User-Agent 等请求头。可以针对整个线程组全局添加,也可以在单个取样器下添加子管理器(优先级更高)。
HTTP Cookie管理器
自动保存和发送 Cookie,模拟登录会话保持。添加后,同一线程组内的请求会自动携带之前响应中的 Cookie。
参数化
结合 CSV数据文件设置 或函数如 ${__RandomString(6,abc123)},将请求中的固定值替换为变量,实现数据驱动测试。
5. 结果调试
调试监听器可以查看每个请求的完整请求体、响应体、请求头、响应头。
聚合报告/汇总报告用于压测后的统计数据。
函数助手通过菜单选项 → 函数助手生成随机数、时间戳等变量。
6. 常见错误及解决
响应显示非 JSON 但状态为 400
一般是忘了设置 Content-Type: application/json,请检查 HTTP 头管理器。
连接超时 java.net.ConnectException
检查服务器 IP 和端口是不是正确,网络是不是可达,防火墙是不是放行。
返回 302 重定向但未自动跳转
可在线程组下添加 HTTP Cookie 管理器,并在 HTTP 请求高级选项中勾选跟随重定向。
POST 参数出现在 URL 中
检查方法是不是误选为 GET,或者误在途径后面手写了 ? 和参数。
文件上传提示找不到文件
相对途径是根据 JMeter 启动目录,建议改用绝对途径,或通过变量动态生成途径。
中文乱码
在 HTTP 请求的内容编码中填写 UTF-8,或在头管理器中设置 Content-Type: application/json;charset=UTF-8。