Spring MVC 注解@ResponseBody或流获取http请求body的json字符串
2017-09-21 15:59
567 查看
1.除了Spring必需要的包以及支持spring注解外 jackson-annotations-2.6.0-xh.jar jackson-core-2.6.0-xh.jar jackson-databind-2.6.0-xh.jar jackson-mapper-asl-1.8.5.jar jackson-jr-all-2.4.3-xh.jar
注意有些jar包版本必须要一样 我就是遇到版本不匹配用的jackson-databind-2.7.0.jar 其他的一样 就一直报错
2.请求必须严格控制 Content-Typeapplication/json 这个不设置好会很难受 找不到错误原因
我使用的是postman测试工具 只是方便测试 你也可以在自己的页面调用 但是要数据格式为json
在body定义要传到后台的json数据
点击sending后 Eclipse debug发现请求到后台
1.方法体直接获取Json数据 Signjson 当然要在方法内添加注解 其中signRequest为获取请求的herder的Authorization值 可以用于验证
最后得到请求的数据json格式封装包含在HTTP消息体的数据了
json参数:{"id":1,"name":"baba市","code":"131081000000","parentId":0,"level":1,"action":1}
获取签名:7ce2cb2af9198a76d395774a54b4bc70c5610320
完成了
@RequestMapping 返回值通常解析为跳转路径
@Responsebody 返回结果不会被解析为跳转路径,而是直接写入HTTP 响应正文中。例如,异步获取 json 数据,加上 @Responsebody 注解后,就会直接返回 json 数据。
@RequestBody 注解则是将 HTTP 请求正文插入方法中,直接获取请求消息体的json内容
二、由于有时候签名验证需要将获取的Json放入算法生成签名,但经过测试发现,当请求的某一参数为“money”:“0.000”时候,获取的Json为“money”:“0”
虽然数值上不发生变化,但是转为Json它会自动缺省小数点后的0 测试 当参数为0.001 不变化 所以可能是Json在不影响参数值精度下慧缺省 这时候签名就会与请求方生成的签名不一致,处理方法是:
使用流留获取参数: 代码如下
BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream(),"UTF8"));
StringBuffer buff=new StringBuffer();
String line="";
while ((line = reader.readLine()) != null) {
buff.append(line);
}
String SignRequestString = buff.toString();
SignRequestString 就是请求过来的参数,拿去做签名生成 OK 不需要注解是呢么的 且和注解不共存
注意有些jar包版本必须要一样 我就是遇到版本不匹配用的jackson-databind-2.7.0.jar 其他的一样 就一直报错
2.请求必须严格控制 Content-Typeapplication/json 这个不设置好会很难受 找不到错误原因
我使用的是postman测试工具 只是方便测试 你也可以在自己的页面调用 但是要数据格式为json
在body定义要传到后台的json数据
点击sending后 Eclipse debug发现请求到后台
1.方法体直接获取Json数据 Signjson 当然要在方法内添加注解 其中signRequest为获取请求的herder的Authorization值 可以用于验证
最后得到请求的数据json格式封装包含在HTTP消息体的数据了
json参数:{"id":1,"name":"baba市","code":"131081000000","parentId":0,"level":1,"action":1}
获取签名:7ce2cb2af9198a76d395774a54b4bc70c5610320
完成了
@RequestMapping 返回值通常解析为跳转路径
@Responsebody 返回结果不会被解析为跳转路径,而是直接写入HTTP 响应正文中。例如,异步获取 json 数据,加上 @Responsebody 注解后,就会直接返回 json 数据。
@RequestBody 注解则是将 HTTP 请求正文插入方法中,直接获取请求消息体的json内容
二、由于有时候签名验证需要将获取的Json放入算法生成签名,但经过测试发现,当请求的某一参数为“money”:“0.000”时候,获取的Json为“money”:“0”
虽然数值上不发生变化,但是转为Json它会自动缺省小数点后的0 测试 当参数为0.001 不变化 所以可能是Json在不影响参数值精度下慧缺省 这时候签名就会与请求方生成的签名不一致,处理方法是:
使用流留获取参数: 代码如下
BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream(),"UTF8"));
StringBuffer buff=new StringBuffer();
String line="";
while ((line = reader.readLine()) != null) {
buff.append(line);
}
String SignRequestString = buff.toString();
SignRequestString 就是请求过来的参数,拿去做签名生成 OK 不需要注解是呢么的 且和注解不共存
相关文章推荐
- Spring mvc使用注解@ResponseBody Ajax请求返回json报406错误
- spring mvc 使用@ResponseBody注解返回json字符串
- spring注解@ResponseBody处理ajax请求,json数据类型
- Spring mvc 通过@ResponseBody注解返回数据
- Spring MVC 中的 @ResponseBody 注解的使用场合
- spring MVC 3.1 注解:@ResponseBody 返回json数据
- spring mvc3.1 @ResponseBody注解生成大量Accept-Charset
- Spring MVC中常用注解之@ResponseBody,@RequestBody,@PathVariable详解
- spring mvc http 产参获取注解分类
- java通过HttpServletRequest获取post请求中的body内容的方法
- Spring MVC -- @Responsebody注解、消息转换器
- Spring mvc 注解@ResponseBody 返回内容编码问题
- 非form表单提交的数据就要用@requestbody注解获取http传过来的值,尤其json
- go get 请求获取http body
- Spring Mvc获取请求参数和 返回参数和注解
- 获取HttpServletRequest请求Body中的内容
- spring mvc 自定义注解ResponseEncryptBody、RequestDecryptBody统一处理加密、解密数据,供移动端使用的rest服务
- Spring MVC注解之@ResponseBody
- Http请求中Content-Type讲解以及在Spring MVC注解中produce和consumes配置详解
- Spring MVC 利用 @ResponseBody 注解返回JSON