1、Post请求参数类型说明

在Post请求中,更重要的是参数类型。不同请求的参数形式是不一样的,在JMeter中的存在形式也是不一样的。

Post请求的数据类型包括

  • form-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,只可以上传二级制数据,通常用来上传文件,但一次只能上传一个文件

2、用于演示的项目说明

Httpbin是一个使用Python + Flask编写的HTTP Request & Response Service项目,该服务主要用于测试 HTTP库,你可以向他发送请求,然后他会按照指定的规则将你的请求返回(查看你所发送请求中的信息)。

Httpbin支持HTTP/HTTPS请求,支持所有的HTTP动词,能测试HTTP请求和响应的各种信息,比如 cookieipheaders 和登录验证等。

Httpbin接口地址:http://httpbin.org/

提示:按照规则请求http://httpbin.org/,会返回发送请求报文的完整内容。

具体可查看https://www.cnblogs.com/liuyuelinfighting/p/14788860.html文章,有详细说明。

3、发送Post请求示例

(1)测试计划内包含的元件

元件操作步骤

  1. 创建测试计划。
  2. 创建线程组:选中“测试计划”右键 —> 添加 —> 线程(用户) —> 线程组
  3. 在线程组里面,添加取样器“HTTP请求”组件:选中“线程组”右键 —> 添加 —> 取样器 —> HTTP请求
  4. 在线程组里面,添加监听器“察看结果树”组件:查看结果,选中“线程组”右键 —> 添加 —> 监听器 —> 察看结果树

最终测试计划中的元件如下:

点击运行按钮,会提示你先保存该脚本,脚本保存完成后会直接自动运行该脚本。

(2)请求参数类型为x-www-form-urlencoded

x-www-form-urlencoded格式数据是Post请求的默认数据格式。

在JMeter界面中的参数选项页直接添加参数,发送Post请求的时候,就发送的是x-www-form-urlencoded格式的数据。

我们请求发送后,我们在察看结果树中查看请求头和请求体中的数据。

请求头:我们可以看到下图中,请求的Content-Typeapplication/x-www-form-urlencoded

请求体:我们可以看到请求体中的参数格式。

当然我们也可以使用Fiddler工具进行查看,整体效果更直观一些,如下图:

4、请求参数form-data格式数据

发送form-data格式的参数,只比发送x-www-form-urlencoded格式的参数多一步,就是勾选上对POST使用multipart/form-data选项。

如下图:

请求发送后,在察看结果树中查看请求头和请求体中的数据。

请求头:我们可以看到下图中,请求的Content-Typemultipart/form-data

请求体:我们可以看到请求体中的参数格式。

当然我们也可以使用Fiddler工具进行查看,整体效果更直观一些,如下图:

5、总结

通过上面两个Post请求,可以十分清晰的看出application/x-www-form-urlencoded参数格式和multipart/form-data参数格式的区别。

而我们在日常工作中,需要按照接口文档的要求,来指定Post请求中参数的格式即可。

说明:

  • 关于Post参数类型,在我Postman部分的内容中讲的比较详细,可以互相对照着看。
  • 关于使用JMeter发送Json格式的数据,在后边配置元件中讲解。

『动善时』JMeter基础 — 14、使用JMeter发送Post请求的更多相关文章

  1. 『动善时』JMeter基础 — 50、使用JMeter测试WebService接口

    目录 1.什么是WebService 2.WebService和SOAP的关系 3.什么是WSDL 4.测试WebService接口前的准备 (1)如何判断是WebService接口 (2)如何获取W ...

  2. 『动善时』JMeter基础 — 51、使用JMeter测试WebService接口

    目录 1.什么是WebService 2.WebService和SOAP的关系 3.什么是WSDL 4.测试WebService接口前的准备 (1)如何判断是WebService接口 (2)如何获取W ...

  3. 『动善时』JMeter基础 — 6、使用JMeter发送一个最基础的请求

    目录 步骤1:创建一个测试计划 步骤2:创建线程组 步骤3:创建取样器 步骤4:创建监听器 步骤5:完善信息 步骤6:保存测试计划 步骤7:查看结果 总结:JMeter测试计划要素 当我们第一次打开J ...

  4. 『动善时』JMeter基础 — 20、JMeter配置元件【HTTP Cookie管理器】详细介绍

    目录 1.HTTP Cookie管理器介绍 2.HTTP Cookie管理器界面详解 3.JMeter中对Cookie的管理 (1)Cookie的存储 (2)Cookie的管理策略 4.补充:Cook ...

  5. 『动善时』JMeter基础 — 41、使用JMeter连接数据库(MySQL)

    目录 1.为什么要使用JMeter连接数据库 2.JMeter连接数据库的前提 3.JDBC连接配置组件界面介绍 4.JMeter连接数据库演示 (1)测试计划内包含的元件 (2)测试计划中添加链接数 ...

  6. 『动善时』JMeter基础 — 44、JMeter对数据库的更新操作

    目录 1.执行一条insert语句 2.insert语句实现参数化 3.一次执行多条insert语句 4.使用Beanshell生成加密数据示例 (1)测试计划内包含的元件 (2)JDBC连接配置组件 ...

  7. 『动善时』JMeter基础 — 2、JMeter的安装和启动

    1.安装Java环境 由于JMeter是纯Java的桌面应用程序,因此它的运行环境需要Java环境,即需要安装JDK或JRE.(也就是安装JDK环境) 步骤简要说明: 下载并安装JDK 配置环境变量 ...

  8. 『动善时』JMeter基础 — 7、jmeter.properties文件常用配置

    目录 1.默认语言设置 2.配置默认编码格式 3.GUI图标放大比例设置 4.功能区工具栏图标大小设置 5.视图区目录树图标大小设置 6.内容区编辑字体设置 7.添加JMeter元素快捷键设置 8.捕 ...

  9. 『动善时』JMeter基础 — 12、JMeter取样器详解:sampler

    目录 1.取样器介绍 2.JMeter自带的取样器 3."HTTP请求"为例介绍一下取样器 (1)HTTP Request: (2)Web服务器: (3)HTTP请求: (4)同请 ...

随机推荐

  1. PTA 统计二叉树结点个数

    6-1 统计二叉树结点个数 (10 分)   本题要求实现一个函数,可统计二叉树的结点个数. 函数接口定义: int NodeCount ( BiTree T); T是二叉树树根指针,函数NodeCo ...

  2. 有意思!强大的 SVG 滤镜

    想写一篇关于 SVG 滤镜的文章已久,SVG 滤镜的存在,让本来就非常强大的 CSS 如虎添翼.让仅仅使用 CSS/HTML/SVG 创作的效果更上一层楼.题图为袁川老师使用 SVG 滤镜实现的云彩效 ...

  3. 微服务面试必问的Dubbo,这么详细还怕自己找不到工作?

    大家好,我是小羽. Dubbo 起源于阿里巴巴,对于我们做电商开发的人来说,基本是首选的技术,那么为何一个区区 soa 服务治理框架,会受到这么多人的青睐呢? 今天就跟着小羽一起看看这个微服务框架之一 ...

  4. Prometheus联邦

    联邦使得一个 Prometheus 服务器可以从另一个 Prometheus 服务器提取选定的时序. 1. 使用场景 Prometheus 联邦有不同的使用场景.通常,联邦被用来实现可扩展的 Prom ...

  5. 2021 小白版,360 行行行转 IT

    hey guys ,我是 cxuan,这一篇文章我就要和你聊聊编程如何学习,这一篇文章涉及的内容简直太多了,我将从入门开始,一步一步到如何提高,然后到一些学习的相关问题,还有一些计算机相关的术语等,干 ...

  6. 代码安全丨第二期:URL重定向(跳转)漏洞

    URL重定向: URL重定向(URLredirection)漏洞,又称跳转漏洞,指的是网络应用程序接受用户可控的输入作为到外部站点的链接,然后在重定向中使用该链接.该安全漏洞给网络钓鱼攻击提供了极大的 ...

  7. mysql索引性能验证,高性能的索引策略

    索引性能验证 1.无索引列的查询 在where条件中查询没有添加索引的列,性能会比较差.我们可以先在sqlyog中打开表t_user的数据,然后复制一个名字出来进行查询. /*无索引列的查询,索引不会 ...

  8. C#如何优雅的多表读取

    关键词:C#.SqlDataReader.IDataReader.NextResult().Read(). Load().Dapper.多表,方便索引和搜索 最近有个需求,需要读一下模具系统的模具信息 ...

  9. mysql 随机选取一条符合条件的记录

    暂时记录下: SELECT *  FROM `kw_user` AS t1 JOIN ( SELECT ROUND( RAND( ) * ( ( SELECT MAX( id ) FROM `kw_u ...

  10. Nginx 负载均衡方案

    轮询 根据Nginx配置文件中的顺序,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除. upstream web { server server1; serve ...