Post提交大数据量,接收端接收不到数据的解决方法

相信很多人都知道post提交是不限制提交的数据量大小的,这是事实。但是,在实际的开发中还是会遇到post提交大数据量,接收端接收不到的问题。最近我就遇到了这么一个问题,折腾了好久最后没办法,于是求救老大,老大稍微点拨一下,就发现了问题所在,后来通过查询资料,才搞明白原因所在。好吧,先说下原因:post提交本身提交的数据量是不限制大小的,但是会受限于接收数据的服务器的配置影响,更具体点,如果使用的是tomcat服务器,可以在tomcat服务器中配置接收post提交的数据量大小,如果tomcat限制了接收post数据量的大小,那么客户端发送的数据量超出了这个限制,服务器端就无法接收到数据。我遇到的问题就是因为tomcat限制了接收post数据的大小,导致服务器端一直无法接收到数据。
我的场景是这样子的,两个webservice服务,其中一个webservice服务当作源服务,调用这个服务获取一批数据,然后经过一些处理后再把这批数据发送到另一个webservice服务,发送数据时用post方式提交。在测试时,如果数据量比较少的时候,能够正确的获取数据和发送数据,接收端也能正确的得到数据。但是有一次测试,一批数据量比较大,超过了2M,接收端居然无法接收数据了,刚开始没想到是数据量的问题(笨啊!!!),因为很清楚的知道post提交时是不限制数据量大小的,后来折腾了很久,求救老大,老大刚开始也不知道原因,提示一下减少数据量试试,照做,经测试发现接收端居然可以接收到数据了,所以可以确定是因为发送的数据量太大了。着实很无语,后来通过查询相关资料发现,造成这个问题并不是post发送数据量大小的原因,根本原因是因为接收数据的webservice服务在tomcat上运行,而tomcat默认情况下是接收不超过2M的数据,如果超出了就会舍弃数据,所以造成接收不到数据的情况。官网说明如下:
这里写图片描述

从截图可以看到,tomcat默认最大接收post的数据为2M,并且可以通过设置为小于0的数来解除这个限制。那么,这个配置可以通过在service.xml的connector的节点中配置:
这里写图片描述

上图配置tomcat最大可以接收post的最大数据量为10M。

另外,从官网上看到,除了tomcat会限制接收的post数据量大小外,还会限制请求头的个数、请求参数的个数,如果在实际的应用中无法接收到请求头的信息或者请求参数的信息,可以排查一下是否是因为tomcat的限制所导致。不过tomcat默认的限制已经是很大了,一般情况下也不会因为这个限制而导致系统出现问题。

总结:遇到在不同环境下会出现奇葩的问题,一定要仔细考虑不同环境下的区别,这样可以帮助我们更快地定位问题。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乐观男孩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值