http请求Content-Type类型和传参方式
引言
在做接口测试、性能测试的时候,调用接口时需要知道Content-Type类型,不然调用接口异常,可能需要花不少时间进行排查。
在一些时候,没有接口文档,或者接口文档没有说明Content-Type类型,在我们仅仅知道接口入参的情况下就去调用接口,结果发现调不同,却不知道问题原因。
所以,在测试之前,首先了解接口的Content-Type类型,调用接口设置后Content-Type类型,避免在这个问题上采坑。
什么是Content-Type呢?
Content-type是Http的实体首部字段,在request的请求行(或response的状态码)之后,也是首部的一部分。用于说明请求或返回的消息主体是用何种方式编码,在request header和response header里都存在。
简单来说,在客户端和服务端通过http请求交互的过程中,你总得告诉服务端你传的是什么格式的数据类型吧(方便服务端对数据进行解析)。
content-type就是告诉服务器客户端的数据类似是什么,并且是通过header头传给服务端的,如果客户端传递的数据类型是错误的,服务器是解析不出,无法验证的。
POST请求中content-type的三种数据类型
content-type:application/x-www-form-urlencoded
jmeter
jmeter如果不指定content-type,默认使用此格式。
参数格式:key1=value1&key2=value2。
假设使用Parameters参数格式,而不设置content-type,默认使用此格式。
反之如果设置content-type:application/json,就会报错。
所以使用Parameters参数格式时,要么不设置content-type类型,要么设置content-type:application/x-www-form-urlencoded,不能用content-type:application/json类型去请求,否则报错!
在http信息头管理器进行设置:
使用content-type:application/x-www-form-urlencoded时,还有一种将报文放在body data里面去请求。
content-type:application/json
以Json格式编码数据体,方便传输结构化数据(相比键值对),广泛用于 ajax 请求。
参数为json格式 :
{
"key1":"value1",
"key2":"value2"
}
在http信息头管理器进行设置:
使用Body Data时,Content-Type可传application/x-www-from-urlencoded或application/json,两者的区别是数据格式不同。但是如果接口定义的Content-Type数据类型是application/json,那就必须使用application/json去传递参数,否则报错!
content-type:multipart/form-data
需要在表单中进行文件上传时,就需要使用该格式,这种格式一般很的少。
text/xml
是一种使用 HTTP 作为传输协议,XML 作为编码方式的远程调用规范
参考:
https://www.bbsmax.com/A/Vx5MG2YazN/
https://blog.csdn.net/u013453787/article/details/88224587
https://blog.csdn.net/sinat_32349327/article/details/62038402