2012-09-03 25 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"

相关问题