JMeter发送post请求

文章讲述了在使用JMeter进行POST请求时遇到的HttpMediaTypeNotSupportedException错误,原因是请求的Content-Type不被接口支持。文中详细介绍了POST请求的几种数据类型,如form-data、x-www-form-urlencoded和raw,并解释了它们的适用场景,特别是强调了在发送JSON数据时应使用的格式。此外,还提到了binary类型用于上传文件。
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,只可以上传二级制数据,通常用来上传文件,但一次只能上传一个文件

### 如何使用 JMeter 发送 POST 请求 #### 配置环境 为了成功运行 JMeter发送 POST 请求,需先完成必要的环境准备工作。这包括下载并安装 JMeter 软件,确保 Java 运行环境已正确配置[^1]。 #### 创建测试计划 启动 JMeter 后,在工作区创建一个新的测试计划作为整个项目的起点。右键点击“测试计划”,选择 **Add → Threads (Users) → Thread Group** 来定义线程组,用于模拟并发用户数和执行次数。 #### 添加 HTTP 请求默认值 为了让后续操作更简便,可以预先设定一些通用的服务器信息。选中线程组后,右键菜单下选择 **Add → Config Element → HTTP Request Defaults**,在此处填写目标主机地址(如 `http://httpbin.org`),以便减少重复输入的工作量[^2]。 #### 构建 POST 请求 继续扩展线程组结构,添加实际负责提交数据的具体组件。同样通过右击线程组节点,依次选取路径为 **Add → Sampler → HTTP Request** 的选项来构建新的采样器实例。随后切换到其属性面板做进一步调整: - 方法字段应设为 “POST”; - 输入具体的 URL 地址或者保留空白利用之前提到过的默认设置即可满足需求; - 参数部分则需要特别注意,因为这是区别于其他类型请求的核心要素之一。如果要传递表单形式的数据,则转至 Parameters 标签页逐项录入名称与对应值;而如果是 JSON 数据体的话,则改用 Body Data 区域手动编写完整的字符串表示内容,并记得把 Content-Type 头部修改成 application/json 类型以匹配预期格式[^2]。 #### 设置监听器观察结果 最后一步就是加入合适的 Listener 组件用来收集反馈信息便于分析判断。比如 View Results Tree 就非常适合初学者直观理解响应详情。只需再次依循前述方式附加相应模块进去就可以了[^1]。 ```python import requests url = 'https://httpbin.org/post' payload = {'key': 'value'} response = requests.post(url, data=payload) print(response.text) ``` 以上代码片段展示了如何借助 Python 的 Requests 库实现相同功能的效果对比参考[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值