C ++ libcurl来检查远程文件是否不同

时间:2015-04-14 11:34:29

标签: c++ http libcurl

我想知道是否可以在下载之前查询远程服务器上的文件,以了解它是否与本地服务器不同。

例如,HTTP请求中的一个非常大的xml文件,如果我可以看到它是否在没有先下载的情况下进行了更改,我可以节省大量浪费的下载。

编辑:这可以是修改日期,文件大小等

2 个答案:

答案 0 :(得分:2)

您可以运行HEAD请求以获取标头信息。根据服务器的不同,这些服务器甚至可能包含带有文件校验和的Header字段(尽管不太可能)。 寻找" Last-Modified"正如Aleksandar指出的那样,Header领域是一个良好的开端。 在这里查看有关如何仅使用libcurl获取标头的信息: C++ libcurl check header before downloading body

答案 1 :(得分:0)

如果仅仅检查修改日期就足够了,libcurl可以直接支持这一点 - 请参阅CURLOPT_TIMEVALUE。还有一个示例代码:

CURL *curl = curl_easy_init();
if(curl) {
  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");

  /* January 1, 2020 is 1577833200 */
  curl_easy_setopt(curl, CURLOPT_TIMEVALUE, 1577833200L);

  /* If-Modified-Since the above time stamp */
  curl_easy_setopt(curl, CURLOPT_TIMECONDITION, CURL_TIMECOND_IFMODSINCE);

  /* Perform the request */
  curl_easy_perform(curl);
}