HTTP请求
HTTP请求是JMeter模拟接口调用、开展接口功能测试与性能测试的核心取样器,用于向目标服务器发送HTTP/HTTPS请求并接收响应。其配置直接决定请求的有效性、准确性及测试场景的还原度,需结合业务场景与协议规范精准设置。
一、HTTP请求的核心定位与适用场景
HTTP请求取样器隶属于线程组,受测试计划全局规则约束,是接口测试的核心执行单元,核心价值与适用场景如下:
- 核心价值:模拟浏览器、客户端等发起HTTP/HTTPS请求,支持GET、POST、PUT、DELETE等全量请求方法,精准还原业务接口调用逻辑,同时采集请求耗时、响应码、响应内容等核心指标。
- 适用场景:接口功能测试:验证接口是否正常响应、返回数据是否符合预期;
- 接口性能测试:模拟多用户并发调用接口,测试接口吞吐量、响应时间、容错能力;
- 接口兼容性测试:适配不同请求头、参数格式、编码方式,验证接口兼容性;
- 复杂业务链路测试:串联多个HTTP请求,模拟完整业务流程(如登录→查询→下单→支付)。
二、HTTP请求核心基础配置
HTTP请求面板(右键线程组→添加→取样器→HTTP请求)包含请求目标、请求方法、参数设置等核心模块,以下详解基础配置项及实操要点:
2.1 请求目标配置
用于指定接口所在服务器地址与端口,是请求生效的基础,支持结合测试计划全局变量配置:
- 服务器名称或IP:填写目标接口的域名(如www.xxx.com)或IP地址(如192.168.1.100),建议通过测试计划全局变量引用(如${server_ip}),便于多环境切换。
- 端口号:填写接口对应的端口,HTTP默认80端口、HTTPS默认443端口,非默认端口需手动填写(如8080、9090),同样可引用全局变量${server_port}。
- 协议:选择请求协议,支持HTTP、HTTPS,若为HTTPS协议,需配合测试计划SSL管理器配置证书(全局)或在HTTP请求中单独配置(局部)。
- 路径:填写接口的相对路径(不含域名/IP与端口),如/api/user/login、/goods/detail,路径需与接口文档完全一致,避免多余空格或字符。
2.2 请求方法配置
选择对应HTTP请求方法,需严格遵循接口文档定义,不同方法对应不同业务逻辑与参数传递方式:
- GET:用于查询数据,参数通过URL拼接传递,请求体无数据(部分场景支持少量数据,但不推荐),适合无副作用、幂等性接口(如查询商品列表)。
- POST:用于提交数据,参数可通过表单、JSON、XML等格式传递(放在请求体中),适合创建、提交类接口(如用户登录、提交订单)。
- PUT:用于全量更新数据,幂等性接口(多次请求结果一致),参数传递方式与POST类似(请求体),适合更新用户信息、商品详情等场景。
- DELETE:用于删除数据,幂等性接口,参数可通过URL拼接或请求体传递,适合删除订单、用户账号等场景。
- 其他方法:支持HEAD、OPTIONS、TRACE、PATCH等,其中PATCH用于部分更新数据,非幂等性,需结合接口文档场景使用。
2.3 参数传递配置
根据请求方法选择对应的参数传递方式,确保参数能被服务器正确解析,核心方式如下:
(1)URL参数(Query参数)
适用于GET、DELETE等方法,参数拼接在URL路径后(格式:路径?key1=value1&key2=value2),在JMeter中配置方式:
- 直接在“路径”中拼接:如/api/user/query?id=100&name=test;
- 通过“参数”面板添加:勾选“自动对URL进行编码”,录入参数名与值,JMeter自动拼接至URL,支持动态变量(如${user_id})。
(2)请求体参数
适用于POST、PUT、PATCH等方法,参数放在请求体中,支持多种格式,需与“内容编码”“请求头”一致:
- 表单格式(application/x-www-form-urlencoded):默认格式,参数以键值对形式提交(如username=admin&password=123456),在“参数”面板添加,适合简单表单提交场景。
- JSON格式(application/json):主流接口格式,参数以JSON字符串形式提交,需在“请求体数据”面板录入JSON内容,同时需在HTTP信息头管理器中添加请求头“Content-Type: application/json”,支持动态变量嵌入(如{"userId":"${user_id}"})。
- XML格式(application/xml):适用于传统接口,参数以XML标签形式提交,在“请求体数据”面板录入XML内容,配合请求头“Content-Type: application/xml”。
- 文件上传(multipart/form-data):用于上传文件,需勾选“对POST使用multipart/form-data”,在“文件上传”面板添加文件路径、参数名,同时可添加其他表单参数,适合头像上传、附件上传场景。
2.4 其他基础配置
- 内容编码:填写字符编码格式,默认ISO-8859-1,建议改为UTF-8,避免中文参数或响应内容乱码。
- 自动重定向:勾选后,若服务器返回3xx重定向响应,JMeter自动跟随重定向,适合登录跳转、页面跳转场景;不勾选则需手动处理重定向。
- 保持 Alive:勾选后,JMeter与服务器保持长连接,减少TCP连接建立开销,适合高并发性能测试;不勾选则每次请求建立新连接。
- 使用代理服务器:如需通过代理(如Fiddler、Charles)抓包调试,可勾选并配置代理服务器地址与端口。
三、HTTP请求进阶配置与用法
3.1 关联HTTP信息头管理器
HTTP请求需配合HTTP信息头管理器(右键线程组→添加→配置元件→HTTP信息头管理器)配置请求头,确保请求符合接口要求,核心请求头如下:
- Content-Type:指定请求体格式,如application/json、application/x-www-form-urlencoded、multipart/form-data,必须与参数传递格式一致。
- Authorization:用于身份认证,如Bearer Token(JWT令牌)、Basic Auth(基础认证),值格式为“Bearer ${token}”(结合全局变量传递令牌)。
- User-Agent:模拟浏览器或客户端身份,部分接口会校验此参数,避免被拦截,如“Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36”。
- Accept:指定客户端可接收的响应格式,如application/json、text/html,与接口返回格式匹配。
避坑要点:请求头配置错误是接口请求失败的高频原因,需严格对照接口文档,尤其注意Content-Type与参数格式的一致性,避免漏配、错配。
3.2 动态参数与变量引用
结合JMeter变量、函数实现参数动态化,适配复杂测试场景(如多用户并发、关联接口):
- 引用全局变量:引用测试计划全局变量(如${server_ip}、${app_key}),实现多环境复用与统一维护。
- 引用线程组局部变量:引用CSV数据文件、用户定义变量(线程组级)中的变量,实现多用户差异化参数(如批量登录场景,每个线程使用不同账号密码)。
- 引用关联变量:通过正则表达式提取器、JSON提取器从前置接口响应中提取数据(如Token、订单ID),作为当前HTTP请求的参数,实现接口联动(如登录→下单)。
- 使用内置函数:通过函数助手(Tools→函数助手对话框)生成动态参数,如${__time(yyyy-MM-dd HH:mm:ss)}(获取当前时间)、${__random(1000,9999)}(生成随机数),适配动态参数场景。
3.3 HTTPS场景专项配置
针对HTTPS接口,需额外配置SSL证书,确保请求安全连接,支持两种配置方式:
- 全局配置(推荐):通过测试计划“SSL Manager”添加证书(.jks、.p12格式),所有HTTP请求(HTTPS协议)自动复用,简化配置。
- 局部配置:在HTTP请求面板“高级”选项中,配置“客户端证书”“证书密码”,仅对当前HTTP请求生效,适合不同接口使用不同证书的场景。
- 跳过证书校验(测试环境):测试环境若无需严格校验证书,可修改JMeter配置文件(jmeter.properties),设置“server.rmi.ssl.disable=true”,重启JMeter后即可跳过SSL校验(生产环境不推荐)。
四、HTTP请求实战场景适配
场景1:GET请求(查询接口)
目标:调用商品列表查询接口,传递分页参数,获取商品数据:
| 配置项 | 配置值 | 配置说明 |
|---|---|---|
| 协议 | HTTP | 接口为HTTP协议 |
| 服务器名称或IP | $ | 引用测试计划全局变量 |
| 端口号 | 8080 | 接口非默认端口 |
| 路径 | /api/goods/list | 商品列表接口相对路径 |
| 请求方法 | GET | 查询接口用GET方法 |
| 参数 | pageNum=1,pageSize=10,categoryId=$ | 分页参数+引用关联变量(分类ID) |
| 请求头 | Accept: application/json | 指定接收JSON格式响应 |
场景2:POST请求(JSON格式,登录接口)
目标:调用用户登录接口,传递JSON格式账号密码,获取登录Token:
| 配置项 | 配置值 | 配置说明 |
|---|---|---|
| 协议 | HTTPS | 登录接口为HTTPS协议,已配置全局SSL证书 |
| 服务器名称或IP | $ | 引用测试计划全局变量 |
| 端口号 | 443 | HTTPS默认端口 |
| 路径 | /api/user/login | 登录接口相对路径 |
| 请求方法 | POST | 提交数据用POST方法 |
| 内容编码 | UTF-8 | 避免中文乱码 |
| 请求体数据 | {"username":"${username}","password":"${password}"} | JSON格式参数,引用CSV变量(多用户账号) |
| 请求头 | Content-Type: application/json | 指定请求体为JSON格式 |
场景3:POST请求(图片上传,multipart/form-data格式)
目标:调用用户头像上传接口,上传本地图片文件,同时传递用户ID等关联参数:
| 配置项 | 配置值 | 配置说明 |
|---|---|---|
| 协议 | HTTPS | 上传接口通常为HTTPS协议,保障文件传输安全 |
| 服务器名称或IP | $ | 引用测试计划全局变量,统一维护服务器地址 |
| 端口号 | 443 | HTTPS默认端口,无需手动修改(非默认端口需对应调整) |
| 路径 | /api/user/avatar/upload | 头像上传接口相对路径,需与接口文档完全一致 |
| 请求方法 | POST | 文件上传必须使用POST方法,支持多参数与文件共存 |
| 内容编码 | UTF-8 | 避免关联参数中文乱码(如用户昵称、备注) |
| 关键配置 | 勾选“对POST使用multipart/form-data” | 文件上传专属格式,JMeter自动适配请求头,无需手动添加Content-Type |
| 文件上传配置 | 名称:file(接口约定字段名)MIME类型:image/jpeg(JPG格式,PNG为image/png)路径:D:/test/avatar/1.jpg(本地绝对路径) | 1. 名称需与接口文档约定一致,否则服务器无法解析2. MIME类型需匹配图片格式,避免文件损坏报错3. 路径用绝对路径,分布式测试需确保所有Slave节点有对应文件 |
| 关联参数(参数面板) | userId:${user_id}(登录后提取的用户ID)avatarType:1(1代表头像,接口约定枚举值) | 除文件外,可添加其他表单参数,实现“文件+业务参数”联动上传 |
| 请求头 | Authorization: Bearer $ | 携带登录Token做身份认证,避免上传接口被拦截 |
五、HTTP请求常见问题与排查
问题1:请求返回400 Bad Request(错误请求)
- 原因:参数格式错误(如JSON语法错误)、参数缺失、Content-Type与参数格式不匹配、URL路径错误。
- 排查与解决:
- 校验请求体参数(如JSON格式),确保无语法错误(可通过JSON在线校验工具验证);
- 对照接口文档,检查是否缺失必填参数,参数名是否与文档一致;
- 确认Content-Type与参数格式匹配(如JSON格式对应application/json);
- 校验URL路径、服务器IP、端口是否正确,避免多余空格或字符。
问题2:请求返回401 Unauthorized(未授权)
- 原因:未携带身份认证信息(如Token、Cookie)、认证信息过期、认证信息错误。
- 排查与解决: .
- 检查HTTP信息头管理器是否配置Authorization请求头,Token是否正确;
- 验证Token是否过期,可通过重新调用登录接口获取新Token;
- 校验认证信息格式是否正确(如Bearer Token前缀是否遗漏);
- 若为Cookie认证,检查是否携带对应Cookie,Cookie是否有效。
问题3:请求返回403 Forbidden(禁止访问)
- 原因:服务器拒绝访问,可能是IP被拦截、权限不足、SSL证书校验失败(HTTPS场景)。
- 排查与解决:
- 确认客户端IP是否在服务器白名单内,是否被防火墙拦截;
- 验证当前账号是否有访问该接口的权限;
- HTTPS场景下,检查SSL证书是否配置正确,是否过期;
- 测试环境可尝试跳过SSL证书校验,排查证书问题。
问题4:请求返回500 Internal Server Error(服务器内部错误)
- 原因:服务器端代码异常,可能是参数合法但业务逻辑错误、服务器资源不足、接口代码Bug。
- 排查与解决:
- 查看接口响应内容,是否有详细错误信息,辅助定位问题;
- 校验参数是否符合业务逻辑(如参数值超出合理范围);
- 联系开发人员查看服务器日志,定位代码异常点;
- 高并发场景下,检查服务器CPU、内存是否不足,导致接口报错。
问题5:中文参数/响应内容乱码
- 原因:字符编码格式不统一,HTTP请求内容编码未设为UTF-8、服务器响应编码不是UTF-8。
- 排查与解决:
- 将HTTP请求“内容编码”设为UTF-8;
- 在HTTP信息头管理器中添加“Accept-Charset: UTF-8”,指定接收编码;
- 联系开发人员确认服务器响应编码是否为UTF-8,统一编码格式;
- 若为GET请求中文参数乱码,确保勾选“自动对URL进行编码”,同时服务器端做好URL解码。

浙公网安备 33010602011771号