如何计算http请求中Content-Length的值

 我来答
百度网友10a24bf
2017-06-16 · TA获得超过1.3万个赞
知道大有可为答主
回答量:1.3万
采纳率:95%
帮助的人:2894万
展开全部
在J2ME的开发中,我遇到了一个问题,我的HTTP请求中没有Content-Length属性。而服务器端需要这个属性的值。
首先说解决方法:
将程序中的flush语句去掉即可。

根据查询各方资料,我了解到:
一般情况下,HTTP请求头中会包含Content-length属性。它的值是发送的内容的长度。接收者(浏览器或者服务器端)会等内容全部传输完毕,再根据Content-Length值来取内容。但是,如果设了Transfer-Encoding为chunked,HTTP请求头中就不会有Content-Length属性了。因为Transfer-Encoding为chunked,就意味着,内容会被分成一块一块的发送,接收者也就不需要等到内容都传输完毕了才读取其中的内容。这种情况下,Content-Length是无法被计算出来,所以也就没有了这个属性。

有两种方法可以使得HTTP请求用chunked方式传输内容。
一种是设定Server的IO buffer长度让Server自动flush buffer中的内容。
另一种是手动的调用IO中的flush函数。如Java中用out.flush();

所以,如果你的HTTP请求用了chunked编码,而这并不是你想要的,那你就把程序中的flush语句去掉,应该就没有问题了。

这样处理了之后,在Eclipse下确实是没有问题了。但是一模一样的代码,在netbeans下还是chunked模式。
Storm代理
2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I... 点击进入详情页
本回答由Storm代理提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式