http 请求头中没有Content-length
来源:互联网 发布:数据挖掘公司 编辑:程序博客网 时间:2024/05/16 11:43
在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模式。
后来我将项目的 仿真器平台换成了SUN公司的WTK。就没有问题了。这里的玄机我一时没有时间去研究。就这样先用着吧。
- http 请求头中没有Content-length
- http头content-length
- http 头里没有content-length属性
- Extjs中加入Content-Type HTTP请求头信息
- Tomcat 中响应头信息(Http Response Header) Content-Length 和 Transfer-Encoding 之种种
- Tomcat 中响应头信息(Http Response Header) Content-Length 和 Transfer-Encoding 之种种
- http返回头中content-length与Transfer-Encoding: chunked的问题释疑
- Tomcat 中响应头信息(Http Response Header) Content-Length 和 Transfer-Encoding 之种种
- http返回头中content-length与Transfer-Encoding: chunked的问题释疑
- Tomcat 中响应头信息(Http Response Header) Content-Length 和 Transfer-Encoding 之种种
- http返回头中content-length与Transfer-Encoding: chunked的问题
- http返回头中content-length与Transfer-Encoding: chunked的问题释疑
- 使用pycurl获取http请求的content-length
- Http请求中Content-Type
- HTTP之Content-Length
- HTTP之Content-Length
- HTTP之Content-Length
- Http协议Content-Length
- Extjs继承
- fsfsd
- Varnish权威指南(中文)
- 在根 web.config 文件之外使用注册为 allowDefinition='MachineToWebRoot' 的节是错误的
- LinQ学习笔记(一)
- http 请求头中没有Content-length
- 工厂模式开发
- SEO: URL优化的10大技巧
- 当PC时代遭遇手机的逼宫
- ASP.NET 调用 Excel COM 组件, 权限配置
- 重读CLDC之一:类Writer、StreamWriter、Helper和OutputStreamWriter
- jfreeChart 在linux下中文乱码的解决
- 【转】outlook新邮件到达提醒设置以及outlook最小化到托盘设置
- servlet寻找。。。sql分页查询。。。。。