Truong的专栏

编程能力重要、程序员的积累和借鉴他人的能力也很重要

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

目前项目在开发环境使用的是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

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

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

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭