2012-09-03 21 views
1

此檢查恢復能力是我使用的代碼:與HttpWebRequest的方法

private bool CheckPartialDL(String url) 
{ 
    HttpWebRequest hwr = (HttpWebRequest)WebRequest.Create(url); 
    hwr.Method = "HEAD"; 
    hwr.AddRange(0); 

    try 
    { 
     HttpWebResponse hwbresp = (HttpWebResponse)hwr.GetResponse(); 
     if (hwbresp.StatusCode == HttpStatusCode.PartialContent) 
     { 
      hwbresp.Close(); 
      return true; 
     } 

    }//end of try 

    catch (WebException wbe) 
    { 
     MessageBox.Show(wbe.Message, "Error"); 
    }//end of catch 

    return false; 

}//end of Check 

但服務器返回以下錯誤:

遠程服務器返回錯誤:(416)請求範圍不符合要求。

我要下載以下文件格式:

http://windowsclient.net/sitefiles/1000/wpf/videos/source-code/creatingavideoapp-part1.zip

當我用IDM檢查恢復能力,IDM表明,它是可用的。

那麼,我提出的代碼錯了?

+0

小問題,但FYI:WebRequest的是.NET,而不是C#部分的一部分。 –

回答

1

這裏是有一些信息

http://www.checkupdown.com/status/E416.html

現在我有斷點續傳下載的小知識以及它們如何工作的一個環節,所以我看到的是 您沒有提供正確的字節範圍爲該文件下載。

假設文件大小爲1500字節。 您必須設置範圍爲類似從150 - 324。 和ofcourse的範圍不能超過1500 :)

所以我認爲你不給它提供數據的適當範圍內進行檢索。

更多,檢查此鏈接的問題,它是指定字節的範圍 HTTP Request with multiple Ranges

1

我知道這個問題是幾年老了,但我只是有相同的問題(以及類似的代碼)和問題似乎是你不能同時擁有「Method ='HEAD'」和AddRange()作爲移除對AddRange的調用工作正常。

編輯 - 這post證實了這一點:

"A server must ignore a Range header field received with a request method other than GET"

相關問題