JMeter中使用“Multipart/from-data”和不使用“Multipart/from-data”区别
近期项目实施中遇到了此类问题,在接口调试中有一个选项叫Use Multipart/from-data
,
默认情况下这个选项是不勾选的,请求后发现数据返回不对
此时request请求数据如下:
勾选Use Multipart/from-data
后,发现数据返回正常了
此时request请求数据如下:
发现第一次未勾选Use Multipart/from-data
传参是按照url格式进行的,而勾选Use Multipart/from-data
后发现传参是一段一段的,而且其中还带有其他参数,查了下二者含义,区别如下:
1、数据编码方式
不使用 multipart/form-data
:
数据通常以 URL 编码(application/x-www-form-urlencoded
)的形式发送。
这种编码方式适用于纯文本数据,比如登录表单中的用户名和密码。
数据会被转换成键值对的形式,如 key1=value1&key2=value2
。
使用 multipart/form-data
:
数据被编码为多个部分(每个部分代表一个字段),每个部分之间由边界符分隔。
这种编码方式支持上传文件和其他二进制数据。
每个部分可以包含不同的内容类型,如文本、图片、视频等。
2. 适用场景
不使用 multipart/form-data
:
适用于简单的表单提交,其中所有数据都是文本形式。
不适合上传文件或其他二进制数据。
使用 multipart/form-data
:
适用于需要上传文件的场景,比如文件上传功能。
也适用于需要发送复杂数据结构的情况,如包含文件和文本信息的表单。
关于边界符、格式:
(边界分隔符作用主要是为了区分不同部分的特殊字符串,起到分隔作用)
--boundary_string
Content-Disposition: form-data; name="description"
这是文件描述
--boundary_string
Content-Disposition: form-data; name="file"; filename="example.txt"
Content-Type: text/plain
... 文件内容 ...
--boundary_string--
总结起来就是,当抓包请求时发现请求格式带有以上边界形式的数据时,在JMeter中记得把Use Multipart/from-data
勾选就可以了。
本文系作者 @cesii 原创发布在JMeter中使用“Multipart/from-data”和不使用“Multipart/from-data”区别 - Cesii Blog。未经许可,禁止转载。
全部评论