我从http://curl.haxx.se/获得了一个小程序,而我在运行它时总是打印网页如何禁用打印功能
#include <iostream>
#include <curl/curl.h>
using namespace std;
int main() {
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://google.com");
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION,1);
res = curl_easy_perform(curl);
/* always cleanup */
curl_easy_cleanup(curl);
}
return 0;
}
答案 0 :(得分:25)
您需要设置CURLOPT_WRITEFUNCTION以使其不使用标准输出。
这里有一个解释(在CURLOPT_WRITEFUNCTION下): http://curl.haxx.se/libcurl/c/curl_easy_setopt.html
和这里(在“处理简单的libcurl”下): http://curl.haxx.se/libcurl/c/libcurl-tutorial.html
基本上添加功能:
size_t write_data(void *buffer, size_t size, size_t nmemb, void *userp)
{
return size * nmemb;
}
并致电
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
应该这样做。
答案 1 :(得分:2)
您仍然可以获得诊断消息。要停止这些更改或添加以下行:
curl_easy_setopt (curl, CURLOPT_VERBOSE, 0L); //0 disable messages
答案 2 :(得分:0)
要将数据写入文件而不是打印,请将文件描述符指定为:
FILE *wfd = fopen("foo.txt", "w");
...
curl_easy_setopt(curl, CURLOPT_WRITEDATA, wfd);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, NULL);
答案 3 :(得分:-2)
对我有用的是在代码中使用CURLOPT_NOBODY选项,在此引用:http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTNOBODY
#include <iostream>
#include <curl/curl.h>
using namespace std;
int main() {
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://google.com");
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION,1);
//USING CURLOPT NOBODY
curl_easy_setopt(curl, CURLOPT_NOBODY,1);
res = curl_easy_perform(curl);
/* always cleanup */
curl_easy_cleanup(curl);
}
return 0;
}