导航
  • 全部
...

http 头里没有content-length属性

Spring89 2013-03-06 05:01:00
公司服务器与手机客户端交互,客户端请求一个地址服务器发往一段XML数据,在用Fiddler查看http响应头的时候,有时候发现有content- length属性,有时候没有这个属性,取而代之的是Transfer-Encoding: chunked属性。由于客户端强制要求,服务器端必须返回content-length,否则,将导致客户端解析错误。
于是测试发现,当XML数据量小的时候,是有content-length属性的,而到达一个值时,就成了Tansfer-Encoding:chunked。 请问这种情况,该如何解决?不管XML数据有多大,服务器发往的XML数据在http头里始终有content-length属性!
...全文
给本帖投票
2246 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuxin1128 2013-06-13
  • 打赏
  • 举报
回复
写入文件,自己计算大小,在赋给Content-Length,这样应该可以了!
dracularking 2013-03-07
  • 打赏
  • 举报
回复
路过,打个酱油
shine333 2013-03-07
  • 打赏
  • 举报
回复
情况是这样的,服务端是动态生成的,你在xml数据很小的时候,没超过服务器的buffer大小的情况下 HTTP的header还没传输过来,能够把Content-Length传输过来。 当xml数据的大小超过buffer的情况下,服务器必须将HTTP Header和Entity(xml数据)flush到客户端,这个时候,entity大小仍然未知,所以没有Content-Length。 如果一定一定要这个Content-Length(就这点来说,我不太清楚为什么一定要) 可以在生成xml的时候,不是直接输出到响应,而是先输出到内存/临时文件之类,生成完毕,计算大小,这只Content-Length头,然后再将XML输出。
Spring89 2013-03-07
  • 打赏
  • 举报
回复
自己顶一下,望有高手能够帮助我能解决此问题!
Spring89 2013-03-06
  • 打赏
  • 举报
回复
引用 4 楼 yktd26 的回复:
用的什么服务器,怎么生成你的response的? 话说这本来是客户端的问题,他们没能正确的解析response,反过头来让服务器端不要用本来可以优化反应时间的方法
是的,客户端代码没写好, 但是现在也不能改客户端了啊!
yktd26 2013-03-06
  • 打赏
  • 举报
回复
用的什么服务器,怎么生成你的response的? 话说这本来是客户端的问题,他们没能正确的解析response,反过头来让服务器端不要用本来可以优化反应时间的方法
  • 打赏
  • 举报
回复
你先完全读进服务器,再发送试试
Spring89 2013-03-06
  • 打赏
  • 举报
回复
引用 1 楼 fangmingshijie 的回复:
Transfer-Encoding: chunked的意思是:一边读数据,一边发给客户端。不是一下传输。会带这个头信息。 Content-Length:则是,服务器内已经缓存了哪个说句,一下发送给客户端会带这个头信息。
那么有没有办法,不让它一边读数据,一边发数据呢?
  • 打赏
  • 举报
回复
Transfer-Encoding: chunked的意思是:一边读数据,一边发给客户端。不是一下传输。会带这个头信息。 Content-Length:则是,服务器内已经缓存了哪个说句,一下发送给客户端会带这个头信息。

81,120

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧

手机看
关注公众号

关注公众号

客服 返回
顶部