首页 > 其他 > 详细

c# Http下载

时间:2014-03-20 18:16:58      阅读:509      评论:0      收藏:0      [点我收藏+]

1.首先是服务器上发布资源,如果资源时自定义格式,比如 .zidingyi结尾的后缀文件,需要在MIME类型上添加处理方式

2.客户端采用WebRequest进行请求,WebRequest处理响应   

bubuko.com,布布扣
 public void DownLoadFile()
        {
            try
            {
                request = (HttpWebRequest)HttpWebRequest.Create(new Uri(vsServerPath));
                request.KeepAlive = true;
                request.Timeout = 1000 * 10;
                
                request.ReadWriteTimeout = 1000 * 20;
                long startPos = 0;
                if (File.Exists(SavePath))//断点续传
                {
                    fs = File.OpenWrite(SavePath);
                    if (fs.Length > 0)//对于已下载的索引文件,重新下载最后一个字节,否则AddRange会出错,因为文件大小获取是总的
                    {
                        fs.Seek(fs.Length - 1, SeekOrigin.Current);
                        startPos = fs.Length - 1;
                    }
                    else
                    {
                        fs.Seek(fs.Length, SeekOrigin.Current);
                        startPos = fs.Length;
                    }
                }
                else//全新下载
                {
                    string vsDir = Path.GetDirectoryName(SavePath);
                    if (!Directory.Exists(vsDir))
                    {
                        Directory.CreateDirectory(vsDir);
                    }
                    fs = new FileStream(SavePath, FileMode.Create);
                    startPos = 0;
                }
                DownLoadedSize = startPos;
                if (startPos > 0)
                {
                    request.AddRange(startPos);
                }
                byte[] buffer = new byte[1024 *32];
                response = (HttpWebResponse)request.GetResponse();
                reader = response.GetResponseStream();
                int iRead = reader.Read(buffer, 0, buffer.Length);
                DownLoadedSize += iRead;
                while (iRead > 0)
                {
                    fs.Write(buffer, 0, iRead);
                    iRead = reader.Read(buffer, 0, buffer.Length);
                    DownLoadedSize += iRead;
                }
                fs.Close();
                reader.Close();

                if (response != null)
                {
                    response.Close();
                }
                if (request != null)
                {
                    request.Abort();
                }
                
            }
            catch (Exception ex)
            {
                if (IFAbortExec)
                {
                    Logger.LogDebug(SavePath);
                    Logger.LogError(ex);
                }
                //断线重连
                ++iReConnectTimes;
                if (iReConnectTimes > 5 || !IFAbortExec)//清理资源
                {
                    fs.Close();
                    if (reader != null)
                    {
                        reader.Close();
                    }

                    if (response != null)
                    {
                        response.Close();
                    }
                    if (request != null)
                    {
                        request.Abort();
                    }
                }
                else if (IFAbortExec)//异常中断才可重连,先清理资源  网速较慢的时候,连接有可能会关闭
                {

                    fs.Close();
                    if (reader != null)
                    {
                        reader.Close();
                    }

                    if (response != null)
                    {
                        response.Close();
                    }
                    if (request != null)
                    {
                        request.Abort();
                    }
                    DownLoadFile();
                }

                
            }
        }
bubuko.com,布布扣

c# Http下载,布布扣,bubuko.com

c# Http下载

原文:http://www.cnblogs.com/niuge/p/3614148.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!