使用httpClient调用后台post接口返回400 Bad Request

Blade 未结 2 6846
路边的小怪
路边的小怪 2019-06-13 11:34

后台日志

2019-06-13 11:28:28.414  WARN 53716 --- [ XNIO-1 task-15] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing: public org.springblade.core.tool.api.R org.springblade.admin.controller.TestController.test(org.springblade.admin.controller.TestVO)]

后台controller

@Slf4j
@RestController
@AllArgsConstructor
@RequestMapping(value="/front/test",produces = "application/json;charset=utf-8")
@Api(value = "前端接口", tags = "前端接口")
public class TestController {


   @PostMapping("/testPost")
   @ResponseBody
   public R test(@RequestBody TestVO test){
      return R.data(test);
   }

}



前端ajax调用没问题,Android端 使用httpClient 和OkHttp调用都是返回400 Bad Request

2条回答
  •  admin
    admin (楼主)
    2019-06-13 13:06


    错误已经很明显了:Required request body is missing


    请求格式不对,要设置成json,并且传json字符串


    随手百度了篇博文供参考:https://my.oschina.net/u/3434392/blog/1826264



    作者追问:2019-06-13 13:06

    请求方式是对的,使用的是post+json请求的,经过多次测试,调用的时候必须在httpClient的请求头中设置Content-type才行

    post.setHeader("Content-type", "application/json");

    但是设置

    post.setHeader("Content-type", "application/json;charset=UTF-8");

    依然报错 400   Bad Request


    application/json 和 application/json;charset=UTF-8 区别是啥?  这个是SpringMVC做的控制吗?

提交回复