从 Handle 获取 libcurl 请求方法

Getting libcurl Request Method from Handle

我的应用程序在多个地方使用 curl_easy_setopt 通过处理实际执行和与 URL 交互的单个函数发送各种类型的请求。

除此之外,在请求到达此函数之前,已通过以下方式之一设置调用方法:

如果调用失败,我需要知道它是哪种调用(例如,HEAD、GET、PUT、POST 等)

由于这些请求可能来自应用程序中的任何位置,因此在失败时我唯一可用的是 CURL* 连接。如何从 CURL* 中提取调用方法?在 curl_easy_getinfo.

中没有什么明显的(对我来说)

非常感谢您提供的任何帮助!

在 libcurl 7.72.0 或更高版本中

是:使用 CURLINFO_EFFECTIVE_METHOD 提取该信息。

示例:

CURL *curl = curl_easy_init();
if(curl) {
  CURLcode res;
  curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
  curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "data");
  curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
  res = curl_easy_perform(curl);
  if(res == CURLE_OK) {
    char *method = NULL;
    curl_easy_getinfo(curl, CURLINFO_EFFECTIVE_METHOD, &method);
    if(method)
      printf("Redirected to method: %s\n", method);
  }
  curl_easy_cleanup(curl);
}

libcurl 7.72.0 之前

不,libcurl 无法导出该信息。您需要在设置 libcurl 选项的同时将其自己存储在您的应用程序中。