首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >HTTP重定向到HTTPS,post请求成了GET请求 报 Required request body is missing 和 Request method GET not supported

HTTP重定向到HTTPS,post请求成了GET请求 报 Required request body is missing 和 Request method GET not supported

作者头像
HaC
发布于 2020-12-30 17:55:29
发布于 2020-12-30 17:55:29
4.6K0
举报
文章被收录于专栏:HaC的技术专栏HaC的技术专栏

本地调试没问题,但是把jar打到生产就报错了:

代码语言:javascript
复制
2020-05-24 16:34:43,554 [http-nio-8888-exec-10] ERROR [c.y.springBootDemo.config.GlobalExceptionHandler] GlobalExceptionHandler.java:21 - 出错啦:
org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing: public com.yudianxx.springBootDemo.model.responseVo.RetResult com.yudianxx.springBootDemo.controller.MeiZiPictureController.getModelHomeBackgroundInfo(com.yudianxx.springBootDemo.model.requestVo.MeiziTuPictureRequestVo)

调用:

代码语言:javascript
复制
org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'GET' not supported
        at org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping.handleNoMatch(RequestMappingInfoHandlerMapping.java:200)
        at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.lookupHandlerMethod(AbstractHandlerMethodMapping.java:419)
        at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:365)
        at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:65)
        at org.springframework.web.servlet.handler.AbstractHandlerMapping.getHandler(AbstractHandlerMapping.java:401)
        at org.springframework.web.servlet.DispatcherServlet.getHandler(DispatcherServlet.java:1231)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1014)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005)
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:897)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:96)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:834)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1415)
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:748)

看到: Required request body is missing 和 Request method 'GET' not supported

我看到我的controller没问题啊,有@RequestBody

代码语言:javascript
复制
 @DisableAuth
    @RequestMapping(value = "/getModelHomeBackgroundInfo")
    public RetResult getModelHomeBackgroundInfo(@RequestBody MeiziTuPictureRequestVo meiziTuPictureRequestVo){
        log.info("进入getModelHomeBackgroundInfo");
        Map<String, Object> map = new HashMap<>();
        if (meiziTuPictureRequestVo.getModelId() == null) {
            return RetResponse.makeErrRsp("参数为空");
        }
        map = meiztuPictureService.getModelHomeBackgroundInfo(meiziTuPictureRequestVo.getModelId());
        return RetResponse.makeOKRsp(map);
    }

@requestBody这个标签在post 、put 方法中用于接收json格式的数据,换转出Object。 @requestParam这个标签在get方法接收的是key-value形式的表单参数。

这两点我还是知道的。 无奈找不到原因。。。

于是我重新写两个方法:

代码语言:javascript
复制
	@DisableAuth
    @PostMapping(path = "/getModelHomeBackgroundInfoPost")
    public RetResult getModelHomeBackgroundInfoPost(@RequestBody MeiziTuPictureRequestVo meiziTuPictureRequestVo){
        log.info("进入getModelHomeBackgroundInfoPost");
        Map<String, Object> map = new HashMap<>();
        if (meiziTuPictureRequestVo.getModelId() == null) {
            return RetResponse.makeErrRsp("参数为空");
        }
        map = meiztuPictureService.getModelHomeBackgroundInfo(meiziTuPictureRequestVo.getModelId());
        return RetResponse.makeOKRsp(map);
    }

    @DisableAuth
    @GetMapping(value = "/getModelHomeBackgroundInfoGet")
    public RetResult getModelHomeBackgroundInfoGet(@RequestParam(name = "modelId") String modelId){
        MeiziTuPictureRequestVo meiziTuPictureRequestVo = new MeiziTuPictureRequestVo();
        meiziTuPictureRequestVo.setModelId(modelId);
        log.info("进入getModelHomeBackgroundInfoGet");
        Map<String, Object> map = new HashMap<>();
        if (meiziTuPictureRequestVo.getModelId() == null) {
            return RetResponse.makeErrRsp("参数为空");
        }
        map = meiztuPictureService.getModelHomeBackgroundInfo(meiziTuPictureRequestVo.getModelId());
        return RetResponse.makeOKRsp(map);
    }

一个get,一个post,重新在postman调用,

并且在拦截器打印请求方法:

本地:

代码语言:javascript
复制
2020-05-24 17:32:02,590 [http-nio-8888-exec-4] INFO  [c.y.springBootDemo.interceptor.MyInterceptor] MyInterceptor.java:37 - 拦截成功
2020-05-24 17:32:02,590 [http-nio-8888-exec-4] INFO  [c.y.springBootDemo.interceptor.MyInterceptor] MyInterceptor.java:39 - 打印当前请求:GET
2020-05-24 17:32:02,594 [http-nio-8888-exec-4] INFO  [c.y.s.controller.MeiZiPictureController] MeiZiPictureController.java:51 - 小程序接口调入测试
2020-05-24 17:32:02,906 [http-nio-8888-exec-4] INFO  [io.lettuce.core.EpollProvider] EpollProvider.java:68 - Starting without optional epoll library
2020-05-24 17:32:02,908 [http-nio-8888-exec-4] INFO  [io.lettuce.core.KqueueProvider] KqueueProvider.java:70 - Starting without optional kqueue library
2020-05-24 17:32:03,258 [http-nio-8888-exec-4] INFO  [c.y.s.controller.MeiZiPictureController] MeiZiPictureController.java:61 - map:{}
2020-05-24 17:34:13,416 [http-nio-8888-exec-5] INFO  [c.y.springBootDemo.interceptor.MyInterceptor] MyInterceptor.java:37 - 拦截成功
2020-05-24 17:34:13,417 [http-nio-8888-exec-5] INFO  [c.y.springBootDemo.interceptor.MyInterceptor] MyInterceptor.java:39 - 打印当前请求:POST
2020-05-24 17:34:13,556 [http-nio-8888-exec-5] INFO  [c.y.s.controller.MeiZiPictureController] MeiZiPictureController.java:136 - 进入getModelHomeBackgroundInfo

没毛病。

打包继续上生产、

日志:

post变成了get,

解决:

  1. postman的url加上 https://

HTTP重定向到HTTPS,post请求成了GET请求 2. 还有一个问题也会导致Required request body is missing ,就是MeiziTuPictureRequestVo 为空。

代码语言:javascript
复制
@DisableAuth
    @PostMapping(path = "/getModelHomeBackgroundInfoPost")
    public RetResult getModelHomeBackgroundInfoPost(@RequestBody MeiziTuPictureRequestVo meiziTuPictureRequestVo)
    {
    }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/05/24 ,如有侵权请联系 cloudcommunity@tencent.com 删除
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档