http请求使用patch,后台Springmvc处理请求参数问题
来源:互联网 发布:疯狂的美工好不好 编辑:程序博客网 时间:2024/06/06 01:25
我使用jmeter和jsp+ajax来发送patch的请求一直报400,415的错误。
1先说jmeter,我一开始是将请求参数放在parameters中。然后方法选择patch,但是一直请求不到
2.我用ajax也是一样:
上网查资料:(https://vaskoz.wordpress.com/2013/07/20/spring-requestmethod-patch/)
意思在这里,首先用patch方法,默认是以x-www-form-urlencoded的contentType来发送信息,并且信息内容是放在request的body里,后台Springmvc的controller在解析controller参数的时候使用的解析器是ServletModelAttributeMethodProcessor,但是这个方法不支持PATCH,当使用getParameterMap()获取body内容的时候,获取不到信息。
所以这里需要用到@RequestBody的方法来绑定数据,此时使用的是RequestResponseBodyMethodProcessor来解析Controller的参数,可以将json格式的内容装载到pojo里,Java Servlet没有doPatch的方法,所以没办法解析传递过来的参数,故用了Spring,所以如果你用了“application/json”的contentType,你必须传递一个json格式的内容
再看这个解释:(http://docs.spring.io/spring-data/rest/docs/current/reference/html/)
也就是说contentType只是支持这四个方式。
然后我在jmeter修改了下
然后添加了个header:(contentType可以是上面4种之一)
后台是这样取得:
这样就可以获取成功了,传递的参数会装到restParams中。
如果我把jmeter传递参数改成ptime=11111111&sign="xxxxxxxxx",后台会报错
2017-02-28 11:37:16,763 WARN org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver [qtp4133428-19] (DefaultHandlerExceptionResolver.java:377) - Failed to read HTTP message: org.springframework.http.converter.HttpMessageNotReadableException: Could not read document: Unrecognized token 'ptime': was expecting ('true', 'false' or 'null')
at [Source: java.io.PushbackInputStream@698aae; line: 1, column: 7]; nested exception is com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'ptime': was expecting ('true', 'false' or 'null')
at [Source: java.io.PushbackInputStream@698aae; line: 1, column: 7]
这个错误我后面会继续跟进。
(后来的补充:因为content-type设定的是json格式,所以传递的参数不能是 参数=值&参数=值 的格式,不然传到后台,是使用json解析器来解析,这时会解析失败)
好了说回ajax。
改动为:
添加了contenType与将参数转化为json格式再传递过去。
注意一定要将内容转为json才能发送,不然400:
转为json:
1 0
- http请求使用patch,后台Springmvc处理请求参数问题
- http请求后台springMvc中获取不到请求参数
- SpringMVC-处理请求参数
- HTTP-PATCH请求
- HTTP请求参数读取问题
- http请求参数编码问题
- SpringMVC获取http请求中的参数
- springmvc中的http请求参数与响应
- AngularJs中$http发送post或者get请求,SpringMVC后台接收不到参数值的解决办法
- C# 后台处理http POST请求类
- 处理请求参数乱码问题
- 使用servlet处理http请求
- 使用URLConnection处理http请求
- 使用servlet处理HTTP请求
- 使用URLConnection处理http请求
- 使用HttpCLient处理HTTP请求
- 使用Servlet处理HTTP请求
- 使用servlet处理http请求
- 蓝桥杯 BASIC-1 基础练习 闰年判断
- Logger 日志打印库详解
- Android Studio编译后安装apk报错:The APK file does not exist on disk
- BlockingQueue详解
- NuGet的简单使用
- http请求使用patch,后台Springmvc处理请求参数问题
- 里氏替换的七大原则
- git+github的使用-最简单的入门教程
- 图片和附件传远程服务器实现图文分离,完全解决
- 【OpenCV】笔记(9)——色彩空间和颜色处理
- linux grep命令
- java设计模式学习之策略模式
- 解决mac VMFusion启动虚拟时报内部错误
- c++ primer 练习 2.13、2.14