对C ++中Bytes范围的HTTP GET请求

时间:2015-10-23 07:50:08

标签: c++ sockets http get request

我需要向服务器发送HTTP GET请求以检索字节范围内的HTML页面。 但是发送以下请求会以字节为单位检索整个页面。 代码示例也很好。

GET / ~aruhela HTTP / 1.1 \ r \ nHost:www.cse.iitd.ernet.in \ r \ nRange:bytes = 0-10 \ r \ nUser-Agent:HTTPGET 1.1 \ r \ n \ r \ ñ

1 个答案:

答案 0 :(得分:1)

如果服务器不支持字节范围,它将忽略您的Range标头并以正常200响应发送整个文件。你无能为力,只需接受文件并继续前进。

如果服务器支持字节范围,它将在206响应中发送请求的字节,或者如果范围不可接受,它将发送416响应。

无论哪种方式,任何Accept-Ranges: bytesGET响应中都存在HEAD标头,它将告诉您服务器是否允许该请求资源上的字节范围。

如果要检查资源是否支持字节范围而不下载,请使用HEAD请求。

要从先前的GET请求恢复损坏的下载,您必须使用HEAD查询服务器,否则请记住先前的请求是否有Accept-Ranges: bytes响应标头,并执行操作相应地在随后的GET个请求中。您还应该考虑ETag响应标头,如果提供了一个If-Match请求标头和最后一个已知的ETag,那么您可以检测资源是否在GET之间被修改请求,以便您可以在需要时从头开始。