为什么多线程断点下载到的文件都是15107字节?

问题描述

我在做多线程断点下载//获得文件长度URL url = new URL(downloadUrl);HttpURLConnection conn = (HttpURLConnection) url.openConnection();if (conn.getResponseCode()==200){ this.fileSize = conn.getContentLength();//获取文件大小}Log.i(TAG, “fileSize =”+fileSize );我发现不管downloadUrl是什么地址,比如下面2个:http://cndns.newhua.com/down/Install_WLMessenger.ziphttp://gx.newhua.com/down/FirefoxSetup3.6.13_cn.zip下载到的都是15107字节,这是何故?Firefox和MSN都几十M呢! 问题补充:vegas51225 写道

解决方案

这样就可以了,加一句conn.setRequestProperty("referer", "http://www.newhua.com/Default.htm");public static void main(String[] args) throws Exception { System.out.println(test("http://cndns.newhua.com/down/Install_WLMessenger.zip")); System.out.println(test("http://gx.newhua.com/down/FirefoxSetup3.6.13_cn.zip")); } static int test(String downloadUrl) throws Exception { URL url = new URL(downloadUrl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); try{ conn.setRequestProperty("referer", "http://www.newhua.com/Default.htm"); if (conn.getResponseCode()==200){ System.out.println(conn.getHeaderFields()); return conn.getContentLength();//获取文件大小 } return -1; }finally{ conn.disconnect(); } };输出结果为:{Content-Length=[9816277], MicrosoftOfficeWebServer=[5.0_Pub], ETag=["2273d4b2f16acb1:71e"], Date=[Fri, 18 Feb 2011 01:15:12 GMT], Accept-Ranges=[bytes], Content-Type=[application/x-zip-compressed], Server=[Microsoft-IIS/6.0], Last-Modified=[Wed, 13 Oct 2010 16:14:23 GMT], null=[HTTP/1.1 200 OK], Content-Location=[http://cndns.newhua.com/down/Install_WLMessenger.zip]}9816277{Content-Length=[8405455], X-Powered-By=[ASP.NET], ETag=["4258a1211f98cb1:3a3"], Date=[Fri, 18 Feb 2011 01:15:24 GMT], Accept-Ranges=[bytes], Content-Type=[application/x-zip-compressed], Server=[Microsoft-IIS/6.0], Last-Modified=[Fri, 10 Dec 2010 04:02:58 GMT], null=[HTTP/1.1 200 OK]}8405455
解决方案二:
你这两个下载文件,直接访问时,都跳转http://www.newhua.com/public static void main(String[] args) throws Exception { System.out.println(test("http://cndns.newhua.com/down/Install_WLMessenger.zip")); System.out.println(test("http://gx.newhua.com/down/FirefoxSetup3.6.13_cn.zip")); } static int test(String downloadUrl) throws Exception { URL url = new URL(downloadUrl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); try{ if (conn.getResponseCode()==200){ System.out.println(conn.getHeaderFields()); return conn.getContentLength();//获取文件大小 } return -1; }finally{ conn.disconnect(); } };输出{Content-Length=[15107], ETag=["1e2d754622c8cb1:3eb"], Date=[Thu, 17 Feb 2011 08:53:34 GMT], Accept-Ranges=[bytes], Content-Type=[text/html], Server=[Microsoft-IIS/6.0], Last-Modified=[Wed, 09 Feb 2011 06:26:24 GMT], null=[HTTP/1.1 200 OK], Content-Location=[http://www.newhua.com/Default.htm]}15107{Content-Length=[15107], ETag=["1e2d754622c8cb1:3eb"], Date=[Thu, 17 Feb 2011 08:53:34 GMT], Accept-Ranges=[bytes], Content-Type=[text/html], Server=[Microsoft-IIS/6.0], Last-Modified=[Wed, 09 Feb 2011 06:26:24 GMT], null=[HTTP/1.1 200 OK], Content-Location=[http://www.newhua.com/Default.htm]}15107

时间: 2024-10-29 09:05:29

为什么多线程断点下载到的文件都是15107字节?的相关文章

Android入门:多线程断点下载详细介绍_Android

本案例在于实现文件的多线程断点下载,即文件在下载一部分中断后,可继续接着已有进度下载,并通过进度条显示进度.也就是说在文件开始下载的同时,自动创建每个线程的下载进度的本地文件,下载中断后,重新进入应用点击下载,程序检查有没有本地文件的存在,若存在,获取本地文件中的下载进度,继续进行下载.当下载完成后,自动删除本地文件. 一.多线程断点下载介绍 所谓的多线程断点下载就是利用多线程下载,并且可被中断,如果突然没电了,重启手机后可以继续下载,而不需要重新下载: 利用的技术有:SQLite存储各个线程的

Android入门:多线程断点下载详细介绍

本案例在于实现文件的多线程断点下载,即文件在下载一部分中断后,可继续接着已有进度下载,并通过进度条显示进度.也就是说在文件开始下载的同时,自动创建每个线程的下载进度的本地文件,下载中断后,重新进入应用点击下载,程序检查有没有本地文件的存在,若存在,获取本地文件中的下载进度,继续进行下载.当下载完成后,自动删除本地文件. 一.多线程断点下载介绍 所谓的多线程断点下载就是利用多线程下载,并且可被中断,如果突然没电了,重启手机后可以继续下载,而不需要重新下载: 利用的技术有:SQLite存储各个线程的

iOS开发网络篇—大文件的多线程断点下载

iOS开发网络篇-多线程断点下载 说明:本文介绍多线程断点下载.项目中使用了苹果自带的类,实现了同时开启多条线程下载一个较大的文件.因为实现过程较为复杂,所以下面贴出完整的代码. 实现思路:下载开始,创建一个和要下载的文件大小相同的文件(如果要下载的文件为100M,那么就在沙盒中创建一个100M的文件,然后计算每一段的下载量,开启多条线程下载各段的数据,分别写入对应的文件部分). 项目中用到的主要类如下: 完成的实现代码如下: 主控制器中的代码: 1 #import "YYViewControl

iOS开发网络篇—实现大文件的多线程断点下载_IOS

说明:本文介绍多线程断点下载.项目中使用了苹果自带的类,实现了同时开启多条线程下载一个较大的文件.因为实现过程较为复杂,所以下面贴出完整的代码. 实现思路:下载开始,创建一个和要下载的文件大小相同的文件(如果要下载的文件为100M,那么就在沙盒中创建一个100M的文件,然后计算每一段的下载量,开启多条线程下载各段的数据,分别写入对应的文件部分). 项目中用到的主要类如下: 完成的实现代码如下: 主控制器中的代码: #import "YYViewController.h" #import

Handle和多线程断点下载

一般来讲服务器只允许同一IP同时开着3到5条线程去下载一个资源.所以客户开着许多线程去下载不一定就很快! 注意: (1)为进度条设置样式:style="?android:attr/progressBarStyleHorizontal"其中?表示引用 <ProgressBar style="?android:attr/progressBarStyleHorizontal"     android:layout_width="fill_parent&qu

我的Android进阶之旅------&amp;gt;Android基于HTTP协议的多线程断点下载器的实现

一.首先写这篇文章之前,要了解实现该Android多线程断点下载器的几个知识点  1.多线程下载的原理,如下图所示 注意:由于Android移动设备和PC机的处理器还是不能相比,所以开辟的子线程建议不要多于5条.当然现在某些高端机子的处理器能力比较强了,就可以多开辟几条子线程. 2.为了实现断点下载,采用数据库方式记录下载的进度,这样当你将该应用退出后,下次点击下载的时候,程序会去查看该下载链接是否存在下载记录,如果存在下载记录就会判断下载的进度,如何从上次下载的进度继续开始下载. 3.特别注意

Android原生实现多线程断点下载实例代码

各位父老乡亲,我单汉三又回来了,今天为大家带来一个用原生的安卓写的多线程断点下载Demo. 通过本文你可以学习到: SQLite的基本使用,数据库的增删改查. Handler的消息处理与更新UI. Service(主要用于下载)的进阶与使用. 原生的json文件解析(多层嵌套). RandomAccessFile的基本使用,可以将文件分段. 基于HttpURLConnection的大文件下载. 上面内容结合,实现多线程,断点下载. Demo是在TV上运行的,图片显示的问题不要纠结了. 文件下载的

Android实现多线程断点下载的方法

  本文实例讲述了Android实现多线程断点下载的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69

java-多线程加上断点下载多个文件文件出现问题了

问题描述 多线程加上断点下载多个文件文件出现问题了 package cn.com.sinosoft.sfjy.util; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.io.InputStreamReader; import java.io.RandomAccessFile; import jav