从 Handle 获取 libcurl 请求方法
Getting libcurl Request Method from Handle
我的应用程序在多个地方使用 curl_easy_setopt 通过处理实际执行和与 URL 交互的单个函数发送各种类型的请求。
除此之外,在请求到达此函数之前,已通过以下方式之一设置调用方法:
- curl_easy_setopt(连接, CURLOPT_NOBODY, 1); // 对于头部
- curl_easy_setopt(连接, CURLOPT_UPLOAD, 1); // 对于 PUT
- curl_easy_setopt(连接, CURLOPT_POST, 1); // 对于 POST
- 等等
如果调用失败,我需要知道它是哪种调用(例如,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 选项的同时将其自己存储在您的应用程序中。
我的应用程序在多个地方使用 curl_easy_setopt 通过处理实际执行和与 URL 交互的单个函数发送各种类型的请求。
除此之外,在请求到达此函数之前,已通过以下方式之一设置调用方法:
- curl_easy_setopt(连接, CURLOPT_NOBODY, 1); // 对于头部
- curl_easy_setopt(连接, CURLOPT_UPLOAD, 1); // 对于 PUT
- curl_easy_setopt(连接, CURLOPT_POST, 1); // 对于 POST
- 等等
如果调用失败,我需要知道它是哪种调用(例如,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 选项的同时将其自己存储在您的应用程序中。