springboot 接收post请求报500错误No message available

今天做接口对接工作,对方传了6个文件流给到我这边,发现接口报如下错误:

{
    "timestamp": "2019-03-09T02:00:44.224+0000",
    "status": 500,
    "error": "Internal Server Error",
    "message": "No message available",
    "path": "/aaa/bbbbb"
}

从提示中看,没有拿到传过来的消息,于是远程断点调试,发现确实在Controller层没有拿到请求参数:

@ResponseBody
@RequestMapping( value = "/bbbbb", method = RequestMethod.POST, produces = "text/html;charset=UTF-8" )
public String bbbbb( HttpServletRequest request ) {
        String requestStr = request.getParameter( "request" );

requestStr为空,导致后面的解析出现空指针异常。

可以判断请求的request在传递到Controller层的时候就已经为空了,看来下对方的请求参数,2.15Mb大小,感觉参数有点大,于是将参数中的6个文件减小到4个,发现请求是正常的,初步定位为请求参数过大导致的问题。

上网查询了下springboot的配置请求参数大小的解决办法,大多是在application.properties中增加以下两行配置:

spring.http.multipart.max-file-size=50Mb
spring.http.multipart.max-request-size=10Mb

经测试无果,于是又多次改变配置的大小值,100Mb,1000Mb,甚至如下:

spring.http.multipart.max-file-size=-1
spring.http.multipart.max-request-size=-1

依然无果。于是查找资料尝试以下配置:

server.tomcat.max-http-post-size=20971520(20971520相当于20Mb,直接写成20Mb会报错)

测试成功

后续又查找了springboot内置的tomcat默认请求大小,2Mb,也是巧了,这次请求多了一点点,才让我发现了这个问题。

至于

spring.http.multipart.max-file-size=-1
spring.http.multipart.max-request-size=-1

猜测可能是配置的发送请求吧,后续有机会再研究下。

你可能感兴趣的:(springboot)