SpringBoot http post请求数据大小设置操作
背景:
使用httppost请求方式的接口,使用request.getParameter("XXX");的方法获取参数的值,当数据量超过几百k的时候,接口接收不到数据或者接收为null。
@RequestMapping(value="/rcv",method=RequestMethod.POST) publicResInfopullApi(HttpServletRequestrequest){ Stringchannel=request.getParameter("channel"); }
在application.properties里添加:
spring.http.multipart.max-file-size=-1
spring.http.multipart.max-request-size=-1
默认值:
privateStringmaxFileSize="1MB";privateStringmaxRequestSize="10MB";
这个设置是大小不限制,主要是这个设置。
server.tomcat.max-http-post-size=-1
补充知识:springbootpost请求数据太大接收不到参数(参数为空)报400错误。
spirngboot发送的请求,有的参数数据量大,有的参数数据量小。数据量大的发送不到后端,报400错误。
首先说以jetty为内嵌服务器的时候:
1、修改yml文件或者properties文件,
server.max-http-post-size=200*1024*1024,设置为200m,总够了吧,可以按照量设置小一点。
SpringBoot1.4.0.M2之后就可以使用这个属性。适合于不修改代码,快速重新部署。
2、在java代码里面实现:
@Bean publicEmbeddedServletContainerCustomizerjettyCustomizer(){ returnnewEmbeddedServletContainerCustomizer(){ @Override publicvoidcustomize(ConfigurableEmbeddedServletContainercontainer){ if(containerinstanceofJettyEmbeddedServletContainerFactory){ ((JettyEmbeddedServletContainerFactory)container) .addServerCustomizers(newJettyServerCustomizer(){ @Override publicvoidcustomize(Serverserver){ setHandlerMaxHttpPostSize(200*1024*1024,server.getHandlers()); } privatevoidsetHandlerMaxHttpPostSize(intmaxHttpPostSize, Handler...handlers){ for(Handlerhandler:handlers){ if(handlerinstanceofContextHandler){ ((ContextHandler)handler) .setMaxFormContentSize(maxHttpPostSize); } elseif(handlerinstanceofHandlerWrapper){ setHandlerMaxHttpPostSize(maxHttpPostSize, ((HandlerWrapper)handler).getHandler()); } elseif(handlerinstanceofHandlerCollection){ setHandlerMaxHttpPostSize(maxHttpPostSize, ((HandlerCollection)handler).getHandlers()); } } } }); } } }; }
SpringBoot1.3.x之后可以使用这个功能。
3、设置接收数据在requestbody里面。上面两种情况适合于数据不放在requestbody里面的。
tomcat应该是类似的。
参考https://stackoverflow.com/questions/36872540/spring-boot-rest-service-form-too-large
以上这篇SpringBoothttppost请求数据大小设置操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。