파일의 일부 (예 : SEC 웹 사이트)를 다운로드하기 위해 HttpClient를 사용하려고합니다.HttpClient 및 HttpRequestHeaders.Range
RangeHeaderValue를 4200 이상으로 설정하면 response.Content.Headers.ContentLength
은 압축으로 인해 크기가 32628 바이트라고하지만 파일의 일부를 가져옵니다. Fiddler에서 요청을 보게되면 아래의 헤더로 Range: bytes=0-4200
이 표시됩니다. 그래서 나는 헤더를 올바르게 설정하고 있다고 확신한다. 왜 내가 이해할 수없는 2 배, 최대 길이를 RangeHeaderValue
~ 4200 미만의 결과로 ContentLength
0 (피들러에서 확인) 및 요청 된 범위까지 일치하지 않는 ContentLength
?
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);