gpt4 book ai didi

c# - HttpClient 和 HttpRequestHeaders.Range

转载 作者:太空狗 更新时间:2023-10-29 21:50:32 25 4
gpt4 key购买 nike

我正在尝试使用 HttpClient 仅下载文件的一部分(在本例中,来自 SEC 网站)。

如果我将 RangeHeaderValue 设置为 >= 4200,我会得到文件的一部分(虽然 response.Content.Headers.ContentLength 说大小是 32628 字节,这可能是由于压缩).如果我在 Fiddler 中看到请求发出,我会看到 Range: bytes=0-4200 作为 Miscellaneous 下的 header 。所以我相当有信心我正确地设置了标题。我想不通的是 2 倍,为什么将 RangeHeaderValue 上的最大长度设置为小于 ~4200 会导致 ContentLength 为 0(在 Fiddler 中确认),为什么ContentLength 与请求的范围不匹配?

我已经确认(通过查看 header )SEC 服务器支持范围(Accept-Ranges: bytes)。示例代码如下。

var client = new HttpClient(new HttpClientHandler { AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip });
var request = new HttpRequestMessage { RequestUri = new Uri("http://www.sec.gov/Archives/edgar/full-index/2013/QTR1/company.idx") };
request.Headers.Range = new RangeHeaderValue(0, 1000);

Console.WriteLine(request.Headers.Range.Ranges);
var response = await client.SendAsync(request);
Console.WriteLine(response.Headers);
Console.WriteLine(response.Content.Headers.ContentLength);
Console.WriteLine(response.RequestMessage);

OutputFromProgram

最佳答案

这里没有问题,服务器声称它遵守范围标准但似乎忽略了它。使用多个 CDN 进一步研究,代码工作正常。

关于c# - HttpClient 和 HttpRequestHeaders.Range,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18729334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com