c ++中的lib curl禁用打印

时间:2010-08-26 05:58:38

标签: c++

我从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;
}

4 个答案:

答案 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;
}