HttpWebRequest AddRange()与不受支持的服务器

时间:2016-01-05 14:18:49

标签: c# httpwebrequest webrequest downloadfile addrange

我正在用C#编写一些代码来从Web服务器下载文件。

我正在测试一些支持'字节范围'请求的链接,所以不确定不支持的服务器会发生什么。

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("someUrl");
request.AddRange(someValue);

如你所见,没什么特别的。从服务器获得响应后,它开始下载文件。我知道不支持字节范围的服务器将返回状态代码200而不是206.所以,在这种情况下,我很好奇我是否必须在没有字节范围请求的情况下重试。

我希望我不必这样做,因为在某些情况下,例如谷歌驱动器链接,关闭响应和获得另一个响应需要很长时间。如果服务器不支持字节范围,那么我真的不介意从一开始就下载。 这是否会在没有编码的情况下自动发生?

1 个答案:

答案 0 :(得分:1)

  

所以,在那种情况下,我很好奇我是否必须在没有字节范围的情况下重试   再次请求

不,如果服务器不支持字节范围,它只会将整个流发送回客户端。好像Range HTTP请求标头不存在一样。因此,基本上当您在客户端上阅读响应流时,您将获得整个文件。

因此,如果您检测到200个状态代码(与206 Partial Content相反),而您发出的请求包括字节范围,则不应该发送额外的范围请求,因为服务器已经将整个文件发送给您。 / p>

顺便说一句,为了检测服务器是否支持远程下载,您可以考虑发送初始HEAD请求以确定功能。