我正在用C#编写一些代码来从Web服务器下载文件。
我正在测试一些支持'字节范围'请求的链接,所以不确定不支持的服务器会发生什么。
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("someUrl");
request.AddRange(someValue);
如你所见,没什么特别的。从服务器获得响应后,它开始下载文件。我知道不支持字节范围的服务器将返回状态代码200而不是206.所以,在这种情况下,我很好奇我是否必须在没有字节范围请求的情况下重试。
我希望我不必这样做,因为在某些情况下,例如谷歌驱动器链接,关闭响应和获得另一个响应需要很长时间。如果服务器不支持字节范围,那么我真的不介意从一开始就下载。 这是否会在没有编码的情况下自动发生?
答案 0 :(得分:1)
所以,在那种情况下,我很好奇我是否必须在没有字节范围的情况下重试 再次请求
不,如果服务器不支持字节范围,它只会将整个流发送回客户端。好像Range
HTTP请求标头不存在一样。因此,基本上当您在客户端上阅读响应流时,您将获得整个文件。
因此,如果您检测到200个状态代码(与206 Partial Content相反),而您发出的请求包括字节范围,则不应该发送额外的范围请求,因为服务器已经将整个文件发送给您。 / p>
顺便说一句,为了检测服务器是否支持远程下载,您可以考虑发送初始HEAD
请求以确定功能。