一、出错说明和解决
系统一个接口修改后,同步维护Jmeter接口脚本,执行报错:”操作失败“,经过排查发现:
1、原来请求方式为POST,数据发送方式为JSON请求体,修改后数据发送方式变为了查询字符串,去掉了请求头中的Content-Type参数
2、之前维护的脚本中,因为Content-Type都一样(Content-Type: application/json;charset=UTF-8),因此将其放在了【测试计划】下的【HTTP信息头管理器】,所有的HTTP请求都共用一个信息头
脚本维护方式的修改有以下2种方法:
1、将查询字符串放到Parameters或Body data中,然后为该接口指定新的Content-Type,即在接口下添加新的【HTTP信息头管理器】,并使用application/x-www-form-urlencoded,覆盖掉原来的公用设置
截图中展示的是取样器中的内容,即查询字符串放到Parameters或Body data中,不是请求头的设置,请求头红框仅是说明这里要加一个新的头管理器,蓝色的底纹才是当前选中项的指示。
2、直接将查询字符串放到path中,作为URL的一部分,Content-Type设置对其不生效
二、请求方式和Content-Type
为什么要这样修改,其实在我们日常使用最多的GET 和 POST请求中
一般GET请求,直接使用查询字符串的方式发送参数,因此不存在Content-Type设置
POST请求,只要有请求体,都要设置正确的Content-Type,否则会出现错误
三、Content-Type介绍
Content-Type是一个HTTP头部(Header)字段,用于指示在HTTP请求或响应中传输的数据的MIME类型(媒体类型)。它表明了数据的格式,使得客户端和服务器可以正确地解析和处理数据。Content-Type的作用是告诉接收方如何理解发送方传输的数据格式,以便正确解码和处理。
MIME类型是一种用于描述文档、文件或字节流的互联网标准。它通常由主类型(例如文本、图像、音频等)和子类型(例如HTML、PNG、MP3等)组成,以斜线(/)分隔。有时,MIME类型还可以包含一些参数,例如字符编码。
常见的Content-Type示例:
- text/html:HTML文档,通常用于网页。
- text/plain:纯文本数据。
- application/json:JSON格式的数据。
- application/xml:XML格式的数据。
- application/javascript:JavaScript代码。
- application/x-www-form-urlencoded:表单数据,通常用于发送表单数据到服务器。
- multipart/form-data:分块的表单数据,通常用于文件上传。
- image/jpeg、image/png、image/gif等:图像类型的数据。
在HTTP请求中,Content-Type Header用于告诉服务器客户端发送的数据格式。服务器根据这个格式来解析请求数据,例如处理表单提交或解析JSON数据。
在HTTP响应中,Content-Type Header指示服务器返回的数据的格式。客户端(通常是浏览器)根据这个格式来正确地显示或处理数据,例如渲染HTML页面、加载图片或处理AJAX请求。
总之,Content-Type在HTTP通信中起到了关键作用,确保双方能够正确地解析和处理数据。