问题描述
我正在使用 libcurl 对给定的 url 执行简单的 http GET。一切正常,包括用户身份验证,但我无法避免在调用 curl_easy_perform()
时打印“OK”消息(我认为“OK”对应于 200 http 返回码)。
我尝试使用 CURLOPT_STDERR
将 stderr 输出重定向到其他地方,但实际上似乎打印是在 stdout 上完成的。
任何人都可以帮忙吗?提前致谢。
解决方法
首先,您应该展示您的代码,以便其他人可以适当地帮助您。
话虽如此,cURL 默认将结果打印到标准输出 - 难道“OK”只是您的页面返回的内容?如果是这种情况,您可以使用 CURLOPT_WRITEFUNCTION 将响应重定向到变量或文件(或丢弃它)。
将响应写入变量的示例函数(取自上面链接的 cURL 文档):
struct memory {
char *response;
size_t size;
};
static size_t cb(void *data,size_t size,size_t nmemb,void *userp) {
size_t realsize = size * nmemb;
struct memory *mem = (struct memory *)userp;
char *ptr = realloc(mem->response,mem->size + realsize + 1);
if(ptr == NULL)
return 0; /* out of memory! */
mem->response = ptr;
memcpy(&(mem->response[mem->size]),data,realsize);
mem->size += realsize;
mem->response[mem->size] = 0;
return realsize;
}
struct memory chunk = {0};
/* send all data to this function */
curl_easy_setopt(curl_handle,CURLOPT_WRITEFUNCTION,cb);
/* we pass our 'chunk' struct to the callback function */
curl_easy_setopt(curl_handle,CURLOPT_WRITEDATA,(void *)&chunk);