使用WebClient实现断点续传 重写

早上下个东西,半天不动,火冒三丈,我可是100M光纤。。。

WebClient、Httpclient、HttpWebRequest、WebRequest

我选了了WebClient因为他封装的够好

断点续传就是在请求头加入我需要接收的字节流段

Range:"bytes=100-200"

看到WebClient.Headers.Add()感觉还是蛮简单的

加入:

client1.Headers.Add(HttpRequestHeader.Range, "bytes=100-200");

但是报错,懵逼,百度一下 我就知道。

必须使用适当的属性或方法修改“Range”标头。

  

网上的套路是使用

HttpWebRequest.AddRange()方法;

注意:

WebRequest类中并没有AddRange();
HttpWebRequest是WebRequest的子类

  

WebClient中有一个可重写类
protected virtual WebRequest GetWebRequest(Uri address);

 

于是修改代码

 public  class WebHttpclientBase: WebClient
    {
        protected override WebRequest GetWebRequest(Uri address) {
            HttpWebRequest webRequest = WebRequest.CreateHttp(address);
            webRequest.AddRange(100, 200);//测试 勿怪...
            return webRequest;
        }
    }

 调用:

 

            WebHttpclientBase client1 = new WebHttpclientBase();
            byte[] by = await client1.DownloadDataTaskAsync(Url);

  

 问题:

监视截图

 

 Headres的count为0???

那么rang是到哪去了???

来个大神解答一下...

要是能看源码就好了...

转载于:https://www.cnblogs.com/AnAng/p/8482741.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值