C#使用HttpWebRequest下载文件

public static bool HttpDownloadFile(string downloadUrl, string localPath, log4net.ILog log)
        {
            bool bFlagDownloadFile = false;
            //log.Debug("HttpDownloadFile--准备以HTTP的方式下载文件,url:[" + downloadUrl + "]本地文件:【" + localPath + "】");
            
            HttpWebRequest request = null;
            HttpWebResponse resp = null;
            try
            {
                request = WebRequest.Create(downloadUrl) as HttpWebRequest;
                request.Timeout = 3000;
                //log.Info("HttpDownloadFile--新建HttpWebRequest!");

                ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(delegate { return true; });
                resp = request.GetResponse() as HttpWebResponse;
                string responseCode = string.Empty;
                //获得http响应状态
                bFlagDownloadFile = getResponseResult(resp.StatusCode, ref responseCode);

                //获得HTTP响应的接收流
                Stream ns = resp.GetResponseStream();

                FileStream fs;
                fs = new FileStream(localPath, System.IO.FileMode.Create);
                int totalFileLen = 0;  //文件最多支持2^32 = 4G

                int fileBufferSize = 1024;
                byte[] nbytes = new byte[fileBufferSize];

                int nreadsize = ns.Read(nbytes, 0, fileBufferSize);
                while (nreadsize > 0)
                {
                    fs.Write(nbytes, 0, nreadsize);

                    totalFileLen += nreadsize;
                    nreadsize = ns.Read(nbytes, 0, fileBufferSize);
                }

                fs.Close();
                ns.Close();
                bFlagDownloadFile = true;

                try
                {
                    if (resp != null)
                    {
                        resp.Close();
                        resp = null;
                    }
                }
                catch (Exception e)
                {

                }

                try
                {
                    if (request != null)
                    {
                        request.Abort();
                        request = null;
                    }
                }
                catch (Exception e)
                {

                }

                log.Debug("HttpDownloadFile--以HTTP的方式下载文件,本地文件:【" + localPath + "】成功!");
            }
            catch (Exception ex)
            {
                log.Error("HttpDownloadFile--以HTTP的方式下载文件,本地文件:【" + localPath + "】时发生错误!异常消息:" + ex.Message,ex);
                bFlagDownloadFile = false;

                try
                {
                    if (resp != null)
                    {
                        resp.Close();
                        resp = null;
                    }
                }catch(Exception e)
                {

                }

                try
                {
                    if (request != null)
                    {
                        request.Abort();
                        request = null;
                    }
                }
                catch (Exception e)
                {

                }
            }

            return bFlagDownloadFile;
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值