往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

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

java向服务器post请求时首部字段content-length的计算方法
  • u013905744
  • u013905744
  • 2017年07月06日 17:57
  • 1470

resin常见有关问题

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

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

java向服务器post请求时首部字段content-length的计算方法
  • u013905744
  • u013905744
  • 2017年07月06日 17:57
  • 1470

Get/POST方法提交的长度限制

1.    Get方法长度限制Http Get方法提交的数据大小长度并没有限制,HTTP协议规范没有对URL长度进行限制。这个限制是特定的浏览器及服务器对它的限制。如:IE对URL长度的限制是2083...
  • toto1297488504
  • toto1297488504
  • 2015年07月16日 10:58
  • 4714

关于 HTTP GET/POST 请求参数长度最大值的问题

关于 HTTP GET/POST 请求参数长度最大值的一个理解误区 2014-09-24 14:02:11 分类: Java 转自:http://blog.chinaunix.net/u...
  • diegochen
  • diegochen
  • 2015年09月11日 11:37
  • 4195

HTTP Post 发送数据给服务器

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

Node.js http服务器搭建和发送http的get,post请求

1.Node.js 搭建http服务器1.1创建server.jsvar http = require('http'); var querystring = require('querystring'...
  • u010046908
  • u010046908
  • 2016年10月06日 09:29
  • 1611

post发送JSON数据(字符串、数组、字典、自定义对象)给服务器

post发送JSON数据(字符串、数组、字典、自定义对象)给服务器触发发送的方法 NSURL *url = [NSURL URLWithString:@"http://127.0.0.1/post/p...
  • sinat_34194127
  • sinat_34194127
  • 2016年06月04日 16:39
  • 2645

环信服务器集成:使用HttpClient-4.5.3发送POST和GET请求

使用HttpClient-4.5.3发送POST和GET请求使用HttpClient4.5.3的jar包,对post和get请求进行了封装,我是用于服务器集成环信REST接口的,希望对大家有帮助...
  • geshi201028
  • geshi201028
  • 2017年03月08日 17:36
  • 254

HttpURLConnection 向服务器发送post和get请求 并接收响应

HttpURLConnection 向服务器发送post和get请求 并接收响应
  • Dopamy_BusyMonkey
  • Dopamy_BusyMonkey
  • 2016年03月11日 10:39
  • 1316
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:往resin 服务器中发送post 报 POST requires content-length
举报原因:
原因补充:

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