使用WebClient实现断点续传 重写

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

WebClient、Httpclient、HttpWebRequest、WebRequest

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

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

Range:"bytes=100-200"

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

加入:

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

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

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

  

网上的套路是使用

HttpWebRequest.AddRange()方法;

1
2
3
4
注意:
 
WebRequest类中并没有AddRange();
HttpWebRequest是WebRequest的子类

  

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

 

于是修改代码

1
2
3
4
5
6
7
8
public  class WebHttpclientBase: WebClient
   {
       protected override WebRequest GetWebRequest(Uri address) {
           HttpWebRequest webRequest = WebRequest.CreateHttp(address);
           webRequest.AddRange(100, 200);//测试 勿怪...
           return webRequest;
       }
   }

 调用:

 

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

  

 问题:

监视截图

 

 Headres的count为0???

那么rang是到哪去了???

来个大神解答一下...

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

posted @   AnAng  阅读(1725)  评论(1编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示