问题陈述: 我正在Windows上用C ++设计文件下载管理器API(VS 2010)。我需要添加一个功能,只有当服务器上有更新的版本时,组件才会下载文件,以避免不必要的下载。
有没有办法确定服务器上是否有更新版本的文件而不下载文件本身?
编辑:我无法访问Web服务器上的/ control以在服务器上托管Web服务等。
提前谢谢!
-SF
答案 0 :(得分:1)
你可以:
向服务器发送HEAD
请求并查看响应的Last-Modified
和/或ETag
标头。如果您是第一次下载文件,或者标题值与先前下载中保存的标题值不匹配,则向服务器发送GET
命令以下载最新文件并保存下次新的标题值。
如果您之前已经下载过一次文件,则可以向服务器发送“有条件”GET
请求,而不先发送HEAD
请求。要使请求“有意义,请:
一个。包含If-Modified-Since
标头,其中包含上次下载的Last-Modified
标头的值。
湾添加If-Match
标头,其中包含之前下载的ETag
标头的值。
在“条件”GET
请求中,如果文件尚未在服务器上修改(文件的当前标头值仍然与您请求的If-
值匹配),则服务器将发送304 Not Modified
回复而不发送任何文件数据。如果文件已在服务器上修改,或者服务器不支持“条件”GET
请求,则会发送200 OK
回复而不是当前文件数据。