利用HttpWebResponse下载特定网址的视频(文件)

你可能会遇到过这样的情况,下载的视频很慢或者部分视频无法下载,下面就利用c#进行视频文件下载,只要你知道视频文件的路径和视频的格式就行了,这里不但是可以下载视频,其它文件也可以,如rar压缩文件等

代码如下:

        /// <summary>

        /// 下载视频

        /// </summary>

        /// <param name="url">视频网址路径</param>

        /// <param name="Cheaturl">欺骗服务器的网址,可为null,

        /// 对于一些网站没有下载权限就要设置,就是你是在哪个网页看到这个视频的网址</param>

        /// <param name="DesPath">保存的路径(路径的文件名带后缀),如string DesPath = "D:\\text.mp4";</param>

        public void DownLoad(string url,string Cheaturl,string DesPath) {

            //指定http下载地址
            HttpWebRequest resquest =(HttpWebRequest)WebRequest.Create(url);
            //指定欺骗服务器下载地址
            resquest.Referer = Cheaturl;

            //复制下载流,并写入文件
            using(HttpWebResponse response=(HttpWebResponse)resquest.GetResponse()){

                if (response.StatusCode == HttpStatusCode.OK)
                {

                    using(Stream stream=response.GetResponseStream()){

                        using(Stream fsStream=new FileStream(DesPath,FileMode.Create)){
                              
                            byte[] buffer = new byte[1024*1024];   
                             while (true)         
                            {         
                                int read = stream.Read (buffer, 0, buffer.Length);       
                                if (read <= 0) break;
                                fsStream.Write(buffer, 0, read);     
                            }

                        }

                    }

                    Console.WriteLine("下载完毕!!");

                }

                else {

                    Console.WriteLine("下载失败"+response.StatusCode);

                }
            }           

        }

 

 

 

2020年6月2日补充:

 

获取网站的html源码,新增POST方式的表单数据和设置代理IP(爬虫中使用到)

 /// <summary>
        /// 获取网页的源码
        /// </summary>
        /// <param name="url">网页url地址</param>
        /// <param name="Method">POST或者GET</param>
        /// <param name="formData">formData的数据,没有填null</param>
        /// <returns></returns>
        public string GetHtml(string url,string Method,Dictionary<string,string> formData)
        {

            System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; //加上这一句
            Uri uri = new Uri(url);
            HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(uri);
            myReq.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36";
            myReq.Accept = "*/*";
            myReq.KeepAlive = false;
            myReq.AllowAutoRedirect = true;
            myReq.Headers.Add("Accept-Language", "zh-CN,zh;q=0.9");

            myReq.ContentType = "application/x-www-form-urlencoded;charset=utf-8";


            myReq.Method =Method;

          
            
            
            //设置代理IP
            //string proxyIp ="ip地址";
            //端口号
            //int proxyPort = 7777;
            //myReq.Proxy = new WebProxy(proxyIp, proxyPort);



            //添加Form  Data
            if (formData != null&&formData.Count>0)
            {
                string formDataParam = "";
                int index = 0;
                foreach (var item in formData)
                {
                    if (index == 0)
                    {
                        formDataParam += item.Key + "=" + item.Value;
                        index++;
                    }
                    else
                    {
                        formDataParam +="&"+item.Key + "=" + item.Value;
                        
                    }
                }
                

                myReq.AllowWriteStreamBuffering = true;
                byte[] buffer = Encoding.UTF8.GetBytes(formDataParam);
                myReq.ContentLength = buffer.Length;
                using (Stream requestStream = myReq.GetRequestStream())
                {

                    requestStream.Write(buffer, 0, buffer.Length);
                    requestStream.Flush();
                }
            }

           

            HttpWebResponse result = (HttpWebResponse)myReq.GetResponse();
            Stream receviceStream = result.GetResponseStream();
            StreamReader readerOfStream = new StreamReader(receviceStream, System.Text.Encoding.GetEncoding("utf-8"));
            string strHTML = readerOfStream.ReadToEnd();
            readerOfStream.Close();
            receviceStream.Close();
            result.Close();
            return strHTML;
        }

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zxy2847225301

测试使用

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值