解决用netty去做web服务时,post长度过大的问题
原文地址
http://my.oschina.net/momohuang/blog/114552
先说一下,本来是想自己写socket ,启动一个简单点的web服务用于接收数据的。写完之后,发现会有各种情况没有考虑到的,很有可能出现问题,而且,太折腾了。于是,就用了netty去其web服务,另外,我也觉得netty基本上是最简单的web服务了吧,如果童鞋们有其他推荐的话,就留个言呗。
1、server
启动了服务,绑定了8088端口。
2、当客户端给服务端post数据的时候,如果数据超过50K,这个时候服务端接受到的post内容是空的了。这是因为超过了 服务端默认的post的长度的最大值。
http协议里边,本来是没有对post的长度进行限制,但是,无论是系统层面或者是服务端层面的,都会对post的长度进行限制,这个也有利于网络安全。
3、在netty中的解决方法
加上
之后,设置默认的chunk最大为 65536,这样,就可以接受最大post的内容大小为 65536。
这样有一个不好的地方,就是这个大小不好控制,开大了,会浪费空间。并且在接受到的字符串的最后,会出现空白的字符串,这是由于post的内容长度小于chunk里边的ChannelBuffer的数组的大小,程序给予补全。
4、自己设置,自己读取chunk
加上
设置为给位 分开一个个chunk去接受信息。