JMeter发送post请求

文章讲述了在使用JMeter进行POST请求时遇到的HttpMediaTypeNotSupportedException错误,原因是请求的Content-Type不被接口支持。文中详细介绍了POST请求的几种数据类型,如form-data、x-www-form-urlencoded和raw,并解释了它们的适用场景,特别是强调了在发送JSON数据时应使用的格式。此外,还提到了binary类型用于上传文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

jmeter发送post请求出现错误:
Resolved exception caused by Handler execution: org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'text/plain;charset=UTF-8' not supported
原因:

请求媒体不支持,需要设置复合接口能接受的媒体

HTTPpost请求参数设置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pFQYF3id-1683621384657)(JMeter发送post-json数据请求.assets/截屏2023-05-09 15.44.35.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dCishTQm-1683621384658)(JMeter发送post-json数据请求.assets/截屏2023-05-09 16.05.00.png)]

Post请求的数据类型包括

  • form-datform-data
    

    以键值对的方式提交数据。

    对于一段utf8编码的字节的数据,直接将utf8编码字节的拼接到请求体中,在本地有多少字节实际就发送多少字节,极大提高了效率,适合传输长字节。

    因此在传很长的字节(如文件)时应用multipart/form-data格式。

    总结:

    • 不对提交的表单数据进行字符编码。
    • 在使用包含文件上传控件的表单时,推荐使用该值。
    • 可以上传键值对,也可以上传文件。
    • 可以上传多个文件。
  • x-www-form-urlencoded
    

    会将表单内的数据转换为键值对,而且键值对都是通过&间隔分开的

    。当需要模拟表单上传数据时,用此选项。

    它是Post提交的默认格式,在发送数据前编码所有字符,采用ascii字符编码,将非ascii字符做百分号编码,所以对于非ascii字符传输效率就很低了。

    但此表单不能上传文件,只能是文本格式。

    总结:

    同样使用URLencode转码,Post请求方式跟Get请求方式的区别在于:

    • Get请求方式把转换、拼接完的字符串用?直接与表单的action连接作为URL使用,所以请求体里没有数据。
    • Post请求方式把转换、拼接后的字符串放在了请求体里,不会在浏览器的地址栏显示,因而更安全一些。
  • raw
    可以上传任意格式的文本类型数据,文本不做任何修饰传到服务端,可以上传txtJavaScriptjsonxmlhtml等格式的数据。
    其实主要的还是传递json格式的数据,当后端要求json数据格式的时候,就要使用此种格式来测试。

  • binary
    相当于Content-Type:application/octet-stream,只可以上传二级制数据,通常用来上传文件,但一次只能上传一个文件

<think>我们正在配置JMeter发送POST请求,格式为x-www-form-urlencoded。需要发送的键为jsonData,值为一个JSON字符串(注意:这个JSON字符串需要被正确编码)。 步骤: 1. 添加HTTP请求:在JMeter测试计划中添加一个HTTP请求元件。 2. 设置请求方法为POST。 3. 设置请求路径(根据实际URL填写)。 4. 在“参数”部分添加参数,而不是在消息体数据中直接写。因为x-www-form-urlencoded格式是通过参数键值对发送的。 5. 添加一个参数,名称填`jsonData`,值填`{ userNo: '2307245705', passWord: 'Sunwoda00-' }`。注意:JMeter会自动对参数值进行URL编码。 但是,请注意:值是一个JSON字符串,它包含空格和特殊字符(如单引号、冒号等),但JMeter发送时会自动进行URL编码,所以不需要我们手动编码。 具体操作: - 在HTTP请求元件中,选择“Body Data”还是“Parameters”?对于x-www-form-urlencoded,我们应该使用“Parameters”标签页。 - 在“Parameters”标签页中,点击“添加”按钮,然后输入名称和值。 注意:有些情况下,如果后端期望的是JSON格式,但要求以x-www-form-urlencoded形式发送(即整个JSON作为表单的一个字段),那么这样配置是正确的。 另外,确保在HTTP请求头中设置Content-Type为`application/x-www-form-urlencoded`。但JMeter默认在发送参数时(使用Parameters标签页)会自动设置这个请求头,所以通常不需要手动设置。 如果遇到问题,可以检查请求头是否被正确设置,或者是否有其他设置覆盖了请求头。 操作步骤详细说明: 1. 打开JMeter,创建测试计划。 2. 右键测试计划 -> 添加 -> 线程(用户) -> 线程组。 3. 右键线程组 -> 添加 -> 取样器 -> HTTP请求。 4. 在HTTP请求中: - 协议:http或https(根据实际情况) - 服务器名称或IP:填写目标服务器 - 端口号:填写端口(如80、443等,或留空使用协议默认端口) - 方法:选择POST - 路径:填写URL路径 5. 在“参数”标签页(在HTTP请求元件下方): - 点击“添加”按钮。 - 在名称列输入:jsonData - 在值列输入:{ userNo: '2307245705', passWord: 'Sunwoda00-' } 6. 如果需要查看结果,可以添加监听器(如查看结果树)。 注意:如果后端要求JSON字符串是严格的双引号,那么应该使用双引号,即: 值:{ "userNo": "2307245705", "passWord": "Sunwoda00-" } 因为JSON标准要求使用双引号。但具体取决于后端接口的要求。 如果后端要求双引号,则值应填写: { "userNo": "2307245705", "passWord": "Sunwoda00-" } 这样,JMeter会将其作为一个字符串,并自动进行URL编码(例如,空格会被编码为%20,双引号被编码为%22等)。 验证:使用查看结果树,可以查看发送请求,确保请求体是类似: jsonData=%7B%20%22userNo%22%3A%20%222307245705%22%2C%20%22passWord%22%3A%20%22Sunwoda00-%22%20%7D 这就是正确的x-www-form-urlencoded格式。 另外,如果接口需要多个参数,可以在参数标签页中添加多个。 如果参数值本身包含特殊字符(如&、=等),JMeter会自动编码,所以无需担心。 总结:在JMeter中配置x-www-form-urlencoded格式的POST请求,只需在HTTP请求的“参数”标签页中添加参数即可。 下面,我们可以生成相关问题。</think>### 在 JMeter 中配置 x-www-form-urlencoded 格式的 POST 请求 以下是详细步骤(基于 JMeter 5.x 版本): #### 1. **添加 HTTP 请求** - 右键测试计划 → 添加 → 线程组 - 右键线程组 → 添加 → 取样器 → **HTTP 请求** #### 2. **配置请求基础信息** - 协议:`http` 或 `https` - 服务器名称/IP:目标域名或 IP - 端口号:目标端口(默认 80/443) - HTTP 请求方法:**POST** - 路径:API 路径(如 `/api/login`) #### 3. **设置 x-www-form-urlencoded 参数** - 在 HTTP 请求面板中切换到 **"参数"** 标签页 - 点击 **"添加"** 按钮: - 名称:`jsonData` - 值:`{ userNo: '2307245705', passWord: 'Sunwoda00-' }` - **重要**:不要勾选 **"编码"** 列(JMeter 会自动 URL 编码) #### 4. **添加 HTTP 头管理器** - 右键 HTTP 请求 → 添加 → 配置元件 → **HTTP 头管理器** - 添加以下头信息: - `Content-Type`: `application/x-www-form-urlencoded` #### 5. **验证配置** 在 **查看结果树** 监听器中检查请求: ```http POST /api/login HTTP/1.1 Content-Type: application/x-www-form-urlencoded jsonData=%7B+userNo%3A+%272307245705%27%2C+passWord%3A+%27Sunwoda00-%27+%7D ``` - 确认参数被自动 URL 编码(如 `{` → `%7B`) > **注意事项**: > 1. 如果值需严格 JSON 格式,请使用双引号: > `{ "userNo": "2307245705", "passWord": "Sunwoda00-" }` > 2. 特殊字符(如密码中的 `-`)会被自动编码,无需手动处理 > 3. 通过 **"参数"** 标签页添加的数据会自动生成 `key=value&` 格式[^1] --- ### 常见问题排查 | 问题现象 | 解决方案 | |---------|----------| | 服务器返回 415 错误 | 检查 HTTP 头管理器的 `Content-Type` 是否设置正确 | | 参数未发送 | 确认未使用 **"消息体数据"** 标签页(与"参数"互斥) | | 特殊字符解析失败 | 在 **HTTP 请求默认值** 中设置 `Content Encoding: UTF-8` |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值