zoukankan      html  css  js  c++  java
  • 使用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是到哪去了???

    来个大神解答一下...

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

  • 相关阅读:
    H5 20-属性选择器上
    H5 19-序选择器下
    H5 18-序选择器
    算法基础部分整理-《图解算法》
    iOS 内存管理之属性关键字
    多线程 ---基础定义部分
    Mongodb基本命令总结
    MySQL四种隔离级别和MVCC
    python同步原语--线程锁
    python进程间通信--信号Signal
  • 原文地址:https://www.cnblogs.com/AnAng/p/8482741.html
Copyright © 2011-2022 走看看