0

我正在开发 Windows 商店应用程序,我尝试为 HttpWebRequest 上的范围标头设置一个值,但我不知道如何执行此操作。我尝试的 3 种解决方案不起作用(例外或方法/属性不存在,即使它们在 msdn 文档中)。

//Create the request.
        HttpWebRequest getRequest = WebRequest.Create(download.URI) as HttpWebRequest;

        // Set the request's method.
        getRequest.Method = "GET";

        //Set the Range'value on header
        /*(1)*/ getRequest.Headers[HttpRequestHeader.Range] = "bytes="+download.DownloadedBytes+"-";
        /*(2)*/ getRequest.Headers.Range = new RangeHeaderValue(download.DownloadedBytes,null);
        /*(3)*/ getRequest.Headers.AddRange(download.DownloadedBytes);

我知道 HttpWebRequest 处于半弃用状态,但我不想使用 HttpClient 类。当 http 请求失败时,我不喜欢如何检索错误代码。

有人有想法吗?

4

1 回答 1

1

在您的初始标题中

getRequest.Headers[HttpRequestHeader.Range] = "bytes="+download.DownloadedBytes+"-";

我不确定您的下载值是多少。DownloadedBytes,但我不相信该字符串会满足 Range 字段标题。该字符串的格式应为“bytes=500-999”

我没有使用 HttpWebRequest 完成这项工作,但我可以为 HttpClient 提供一个示例(对不起,我知道你不想切换到这个,但它可能是最好的)

var client = new HttpClient(handler);
client.DefaultRequestHeaders.Add("range", @"bytes=0-9000");
var response = await client.GetAsync(url);

当然,需要注意的是,并不是所有的 Web 服务器都会尊重范围标头。祝你好运!

于 2014-04-24T04:40:30.530 回答