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

來個大神解答一下...

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM