使用提供的接口进行测试时,而在使用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了