POST提交参数过大,导致接口500

使用提供的接口进行测试时,而在使用java代码跑的时候,什么参数都是对的该检查的地方都看了都是对的,结果就一直报错500了,郁闷中…

于是开始进行测试看到底是代码还是接口问题, 该调用的POST接口提交过来的数据是用流的方式直接获取的, request.getInputStream()后需要解码。 所以我创建了byte数组然后Base64模拟参数传递 我发现如果使用b[i]=(byte)(Math.random()*10); 的时候post的提交是成功的。 而使用b[i]=(byte)(Math.random()*1150);的时候post的结果是500,摸不着头脑。 我还以为是接口可能有问题 ,然后我使用postman工具将模拟参数传入(两种byte数组都测了) 结果调用的时候是对的。 这时候反应过来了 使用java的时候其实跑的是tomcat, 理论上post方式传输的数据大小没限制,限制post传输数据大小的是服务器的硬件配置。 于是我对tomcat的配置进行了修改

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" maxPostSize="5120000"/>

tomcat的maxPostSize默认是2M,单位为字节。maxPostSize="0"则表示不限制大小。

设置完成重启项目,发现OK了

经验分享 程序员 微信小程序 职场和发展