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请求方式把转换、拼接后的字符串放在了请求体里,不会在浏览器的地址栏显示,因而更安全一些。
- Get请求方式把转换、拼接完的字符串用
-
raw
可以上传任意格式的文本类型数据,文本不做任何修饰传到服务端,可以上传txt
,JavaScript
,json
,xml
,html
等格式的数据。
其实主要的还是传递json格式的数据,当后端要求json数据格式的时候,就要使用此种格式来测试。 -
binary
相当于Content-Type:application/octet-stream
,只可以上传二级制数据,通常用来上传文件,但一次只能上传一个文件