1

这是我正在使用的代码:

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 显示它可用。

那么我提出的代码哪里错了?

4

2 回答 2

1

我知道这个问题已经有几年了,但我只是遇到了完全相同的问题(和类似的代码),问题似乎是你不能同时拥有“Method = 'HEAD'”和 AddRange() 作为删除对 AddRange 的调用工作正常。

编辑 - 这篇文章证实了这一点:

“服务器必须忽略使用 GET 以外的请求方法接收到的 Range 标头字段”

于 2014-11-19T15:05:27.587 回答
1

这是一个包含一些信息的链接

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

现在我对可恢复下载及其工作原理有了一点了解,所以我看到的是您没有为文件提供要下载的正确字节范围。

假设文件的大小为 1500 字节。您必须将范围设置为从 150 到 324。当然范围不得超过 1500 :)

所以我认为你没有为它提供合适的数据范围来检索。

更多,检查这个链接问题,它指定了具有多个范围的 HTTP 请求的字节 范围

于 2012-09-03T04:59:59.517 回答