往resin 服务器中发送post 报 POST requires content-length

转载 2015年11月20日 16:00:08

目前项目在开发环境使用的是tomcat  预发布环境和生产环境使用的是resin

在调用预发布中post接口中发现一直报 POST requires content-length 很是郁闷

通过查看resin源码发现一个很有意思的代码

com.caucho.server.http.HttpRequest

[java] view plaincopy
  1. public boolean initStream(ReadStream readStream, ReadStream rawRead)  
  2.     throws IOException  
  3.   {  
  4.     rawRead.setSibling(null);  
  5.   
  6.     if (getConnection().isDuplex()) {  
  7.       this._rawInputStream.init(rawRead);  
  8.       readStream.init(this._rawInputStream, null);  
  9.       return true;  
  10.     }  
  11.   
  12.     long contentLength = getLongContentLength();  
  13.   
  14.     if ((contentLength < 0L) && (257 <= getVersion()) && (getHeader("Transfer-Encoding") != null))  
  15.     {  
  16.       this._chunkedInputStream.init(rawRead);  
  17.       readStream.init(this._chunkedInputStream, null);  
  18.       return true;  
  19.     }  
  20.   
  21.     if (contentLength >= 0L) {  
  22.       this._contentLengthStream.init(rawRead, contentLength);  
  23.       readStream.init(this._contentLengthStream, null);  
  24.   
  25.       return true;  
  26.     }  
  27.     if (getMethod().equals("POST")) {  
  28.       this._contentLengthStream.init(rawRead, 0L);  
  29.       readStream.init(this._contentLengthStream, null);  
  30.   
  31.       throw new BadRequestException("POST requires content-length");  
  32.     }  
  33.   
  34.     this._contentLengthStream.init(rawRead, 0L);  
  35.     readStream.init(this._contentLengthStream, null);  
  36.   
  37.     return false;  
  38.   }  

从这个方法中可以看出只要前面的3个条件没有进去直接到第4个条件时只要是post请求直接抛异常

处理方式直接在发送http请求时在header中加上

Transfer-Encoding = utf-8


以上只是自己碰到这个问题的一个处理方式。

欢迎访问我的技术群425783133

相关文章推荐

Http中的post方法与content-length

post content-length 0 用post请求时content-length 的计算结果根据form的enctype不一样而不一样。 post请求时,大家都知道有三种编码方式。 HTML ...

往resin 服务器中发送post 报 POST requires content-length

目前项目在开发环境使用的是tomcat  预发布环境和生产环境使用的是resin 在调用预发布中post接口中发现一直报 POST requires content-length 很是郁闷 通过查...

java向服务器post请求时首部字段content-length的计算方法

java向服务器post请求时首部字段content-length的计算方法

Warning: POST Content-Length of 81360713 bytes exceeds the limit of 3145728 bytes in Unknown on line

在PHP的文件(视频)上传中,上传大文件时会出现错误提示: Warning: POST Content-Length of 81360713 bytes exceeds the limit of 3...
  • LouAnt
  • LouAnt
  • 2016年04月13日 15:20
  • 2848

文章5:http协议中content-length 以及chunked编码分析

转载请注明出处 http://blog.csdn.net/yankai0219/article/details/8269922  0.序 1.http/1.1协议中与chunked...

resin常见有关问题

resin常见有关问题 1.1. Resin停止响应 ●可能是一个线程死锁的问题,应该进行线程转储。 ●启用完全调试日志模式,检查日志最后的纪录看看发生了什么。 1.2. Resin...

resin的配置【转】

Resin是CAUCHO公司的产品,是一个非常流行的application server,对servlet和JSP提供了良好的支持,性能也比较优良,resin自身采用JAVA语言开发。 版本区别: ...

HTTP Post 发送数据给服务器

  • 2014年03月12日 20:50
  • 22KB
  • 下载

通过POST向WEB服务器发送数据/上传文件(HttpSendRequestEx、InternetWriteFile)

/************************************************************************/ /* upload thread /*******...
  • gxj1680
  • gxj1680
  • 2013年07月18日 17:14
  • 7191
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:往resin 服务器中发送post 报 POST requires content-length
举报原因:
原因补充:

(最多只允许输入30个字)