正在android下写一个多线程下载类,发现当文件很小(几kb大小)时,该代码工作良好。当下载的文件比较大(如几百kb)时,下载到的文件大小全部为0。
在后台打印中查看到,文件比较小时,一般可以正确拿到http的content-length,当文件比较大时,content-length全部为-1,多线程下载自然无法正确计算出分块的大小,导致无法下载。
很显然,这是服务器端的问题,没有提供正确的content-length。查看服务器代码,果然如此。
在服务器提供下载服务的servlet代码中增加Response.setContentLength(),问题解决。