求高人指点http里面Content-Length获取不到的情况

tjhaua11 2013-07-29 11:20:39
之前用这个

DefaultHttpClient client = createHttpClient(ctx, SOCKET_TIMEOUT, SOCKET_TIMEOUT);
HttpGet method = new HttpGet(imgurl);
HttpResponse response = client.execute(method);

获取response 然后获取文件长度,
Header header = response.getFirstHeader("Content-Length");
int fileLength = Integer.valueOf(header.getValue());

结果在多国测试时发现,某些卡会出现header为null的情况,但是response 是有的,而且下载对应文件都是没有问题的,哪位高人能帮忙分析下不? 或者给个分析方法也行。
...全文
1105 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
TobyC 2013-07-29
  • 打赏
  • 举报
回复
首先看看是不是因为大小写的原因导致拿不到。也就是说,会不会服务器给的是“content-length”或者其他的。 其次,Content-Length 获取不到挺正常的。不是每个服务器都标准的按照协议来做的。我之前就遇到过服务器不给这个字段的。 另外,不知道楼主用这个字段做什么?如果是为了计算下载进度。那么当Content-Length为null的时候,就需要做特别的处理,也就是显示那种“无限”的进度,比如Android里面的ProgressBar的setIndeterminate(true),就是用来显示这种“无限”的进度。。
tjhaua11 2013-07-29
  • 打赏
  • 举报
回复
难道每个运营商使用的http协议不一样导致的?
tjhaua11 2013-07-29
  • 打赏
  • 举报
回复
感谢TobyC的回复! 这个主要是为了获取文件长度,然后下载完成之后与这个长度做个对比,这样就知道文件下载完整性了, 前面也说了,这个服务器是一个服务器,只是在不同国家通过不同运营商的3G网络来访问的,在国内测试都是没有任何问题的,就是在一个国家一个卡出现这种问题,所以比较奇怪。

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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