之前用这个 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 是有的,而且下载对应文件都是没有问题的,哪位高人能帮忙分析下不? 或者给个分析方法也行。

解决方案 »

  1.   

    难道每个运营商使用的http协议不一样导致的?
      

  2.   

    首先看看是不是因为大小写的原因导致拿不到。也就是说,会不会服务器给的是“content-length”或者其他的。其次,Content-Length 获取不到挺正常的。不是每个服务器都标准的按照协议来做的。我之前就遇到过服务器不给这个字段的。另外,不知道楼主用这个字段做什么?如果是为了计算下载进度。那么当Content-Length为null的时候,就需要做特别的处理,也就是显示那种“无限”的进度,比如Android里面的ProgressBar的setIndeterminate(true),就是用来显示这种“无限”的进度。。
      

  3.   

    感谢TobyC的回复!这个主要是为了获取文件长度,然后下载完成之后与这个长度做个对比,这样就知道文件下载完整性了,前面也说了,这个服务器是一个服务器,只是在不同国家通过不同运营商的3G网络来访问的,在国内测试都是没有任何问题的,就是在一个国家一个卡出现这种问题,所以比较奇怪。