【问题标题】:Getting libcurl Request Method from Handle从句柄获取 libcurl 请求方法
【发布时间】:2015-04-23 17:06:56
【问题描述】:

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

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

  • curl_easy_setopt(连接,CURLOPT_NOBODY,1); // 头部
  • curl_easy_setopt(连接,CURLOPT_UPLOAD,1); // 放置
  • curl_easy_setopt(连接,CURLOPT_POST,1); // 用于发布

如果调用失败,我需要知道它是什么类型的调用(例如,HEAD、GET、PUT、POST 等)

由于这些请求可以来自应用程序中的任何位置,因此在失败时我唯一可用的就是 CURL* 连接。如何从 CURL* 中提取调用方法? curl_easy_getinfo 中没有什么明显的(对我而言)。

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

【问题讨论】:

    标签: c++ curl libcurl


    【解决方案1】:

    在 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 选项的同时将其存储在您的应用程序中。

    【讨论】:

      猜你喜欢
      • 2010-09-19
      • 1970-01-01
      • 2015-07-24
      • 2019-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多