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是到哪去了???

    来个大神解答一下...

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

  • 相关阅读:
    oj1089-1096总结(输入输出练习)
    oj 1002题 (大数题)
    第五次博客园作业+
    第五次博客园作业-
    博客园第四次作业
    博客园第四次作业
    C语言第三次作业
    c语言第三次作业
    设计模式第一次作业
    项目选题报告(团队)
  • 原文地址:https://www.cnblogs.com/AnAng/p/8482741.html
Copyright © 2011-2022 走看看