springboot简单服务,收到第二次请求的body会带上第一次请求的body内容

swordlhh 2019-06-21 01:06:25
springboot学习,写了个简单的服务代码。使用postman发起请求,发现第一次请求处理没问题,但是controller在第二次请求受理的时候,HttpServletRequest对象中的http请求的body,会自动带上上次请求的body,导致service无法解析json报异常。postman发起的数据是正常的。
求大神指导。
controller的代码截取如下:
@RestController
@RequestMapping(value = "/check")
public class CheckController {

@Autowired
private CheckService checkService;

@Autowired
private HttpServletRequest req;

@Autowired
private HttpServletResponse rsp;

@GetMapping("/")
public String hello() {
return "Hello! Wellcom to check server!";
}

@PostMapping("/")
public String checkByXXX() throws IOException {

return checkService.checkByXXX(req);
}
}

第一次请求服务端得到的json包:
{"header":{ "merchid":"512000", "jobid":"T20190620000011", "trxdate":"20190620", "trxtime":"100101", "errcode":"", "errmsg":"", "mac":"" },"data":{ "realname": "张三", "idcard":"510265790128303", "bankcard":"6226090000000048", "mobile":"18100000000" }}
第二次请求的json包:
{"header":{ "merchid":"512000", "jobid":"T20190620000011", "trxdate":"20190620", "trxtime":"100101", "errcode":"", "errmsg":"", "mac":"" },"data":{ "realname": "张三", "idcard":"510265790128303", "bankcard":"6226090000000048", "mobile":"18100000000" }}{"header":{ "merchid":"512000", "jobid":"T20190620000012", "trxdate":"20190620", "trxtime":"100101", "errcode":"", "errmsg":"", "mac":"" },"data":{ "realname": "张三", "idcard":"510265790128303", "bankcard":"6226090000000048", "mobile":"18100000000" }}
第三次会在第二次的基础上再加。
...全文
365 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
swordlhh 2019-06-21
  • 打赏
  • 举报
回复
引用 9 楼 getdate 的回复:
[quote=引用 8 楼 getdate 的回复:]


@RestController
@RequestMapping(value = "/check")
public class CheckController {

@Autowired
private CheckService checkService;


@GetMapping("/")
public String hello() {
return "Hello! Wellcom to check server!";
}

@PostMapping("/")
public String checkByXXX() throws IOException {

return checkService.checkByXXX( HttpServletRequest req);
}
}
看错了.看错了. @PostMapping("/") public String checkByXXX(HttpServletRequest req) throws IOException { return checkService.checkByXXX( req); } [/quote]改成这样了,还是一样
swordlhh 2019-06-21
  • 打赏
  • 举报
回复
引用 9 楼 getdate 的回复:
[quote=引用 8 楼 getdate 的回复:]


@RestController
@RequestMapping(value = "/check")
public class CheckController {

@Autowired
private CheckService checkService;


@GetMapping("/")
public String hello() {
return "Hello! Wellcom to check server!";
}

@PostMapping("/")
public String checkByXXX() throws IOException {

return checkService.checkByXXX( HttpServletRequest req);
}
}
看错了.看错了. @PostMapping("/") public String checkByXXX(HttpServletRequest req) throws IOException { return checkService.checkByXXX( req); } [/quote]改成这样了,还是一样的结果
getdate 2019-06-21
  • 打赏
  • 举报
回复
引用 8 楼 getdate 的回复:


@RestController
@RequestMapping(value = "/check")
public class CheckController {

@Autowired
private CheckService checkService;


@GetMapping("/")
public String hello() {
return "Hello! Wellcom to check server!";
}

@PostMapping("/")
public String checkByXXX() throws IOException {

return checkService.checkByXXX( HttpServletRequest req);
}
}
看错了.看错了. @PostMapping("/") public String checkByXXX(HttpServletRequest req) throws IOException { return checkService.checkByXXX( req); }
getdate 2019-06-21
  • 打赏
  • 举报
回复


@RestController
@RequestMapping(value = "/check")
public class CheckController {

@Autowired
private CheckService checkService;


@GetMapping("/")
public String hello() {
return "Hello! Wellcom to check server!";
}

@PostMapping("/")
public String checkByXXX() throws IOException {

return checkService.checkByXXX( HttpServletRequest req);
}
}
swordlhh 2019-06-21
  • 打赏
  • 举报
回复
上面回复中不是结构,是结果,一个json字符串。
swordlhh 2019-06-21
  • 打赏
  • 举报
回复
引用 5 楼 getdate 的回复:
引用 4 楼 swordlhh 的回复:
[quote=引用 3 楼 getdate 的回复:][quote=引用 2 楼 swordlhh 的回复:] [quote=引用 1 楼 心怀啊 的回复:]将req自己rsp移到请求方法作为形参,谁教你将这两个类作为对象变量的?
网上看的代码,大概学着弄了一下。对原理不清楚,req作为形參是为了在seicice中得到请求内容。请帮忙指点
就是这个原因,需要在每个请求中单独作为参数传入,而不是作为公共的参数,[/quote]请帮忙指点一下代码改进啊[/quote] method(HttpServletRequest req,HttpServletResponse rsp); 都说的很明白了,把这两个成员变量去掉,分别加到 每个需要的方法中.[/quote] 改成了method(HttpServletRequest req,HttpServletResponse rsp);还是一样的结果,真是崩溃...... PS: 在service中,我只取了req的内容走解析,并将结构作为返回报文,未对rsp做任何处理。
getdate 2019-06-21
  • 打赏
  • 举报
回复
引用 4 楼 swordlhh 的回复:
引用 3 楼 getdate 的回复:
[quote=引用 2 楼 swordlhh 的回复:] [quote=引用 1 楼 心怀啊 的回复:]将req自己rsp移到请求方法作为形参,谁教你将这两个类作为对象变量的?
网上看的代码,大概学着弄了一下。对原理不清楚,req作为形參是为了在seicice中得到请求内容。请帮忙指点
就是这个原因,需要在每个请求中单独作为参数传入,而不是作为公共的参数,[/quote]请帮忙指点一下代码改进啊[/quote] method(HttpServletRequest req,HttpServletResponse rsp); 都说的很明白了,把这两个成员变量去掉,分别加到 每个需要的方法中.
swordlhh 2019-06-21
  • 打赏
  • 举报
回复
引用 3 楼 getdate 的回复:
引用 2 楼 swordlhh 的回复:
[quote=引用 1 楼 心怀啊 的回复:]将req自己rsp移到请求方法作为形参,谁教你将这两个类作为对象变量的?
网上看的代码,大概学着弄了一下。对原理不清楚,req作为形參是为了在seicice中得到请求内容。请帮忙指点
就是这个原因,需要在每个请求中单独作为参数传入,而不是作为公共的参数,[/quote]请帮忙指点一下代码改进啊
getdate 2019-06-21
  • 打赏
  • 举报
回复
引用 2 楼 swordlhh 的回复:
引用 1 楼 心怀啊 的回复:
将req自己rsp移到请求方法作为形参,谁教你将这两个类作为对象变量的?
网上看的代码,大概学着弄了一下。对原理不清楚,req作为形參是为了在seicice中得到请求内容。请帮忙指点
就是这个原因,需要在每个请求中单独作为参数传入,而不是作为公共的参数,
swordlhh 2019-06-21
  • 打赏
  • 举报
回复
引用 1 楼 心怀啊 的回复:
将req自己rsp移到请求方法作为形参,谁教你将这两个类作为对象变量的?
网上看的代码,大概学着弄了一下。对原理不清楚,req作为形參是为了在seicice中得到请求内容。请帮忙指点
心怀啊 2019-06-21
  • 打赏
  • 举报
回复
将req自己rsp移到请求方法作为形参,谁教你将这两个类作为对象变量的?
swordlhh 2019-06-21
  • 打赏
  • 举报
回复
找到原因了,不是request处理的问题,是我serviceImpl类中,定义了一个类变量,保存了请求数据......

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧