2010-08-26 10 views
10

mam mały program z http://curl.haxx.se/ i podczas uruchamiania go zawsze drukuje stronę Jak mogę wyłączyć Funkcja drukowanialib curl w C++ wyłączyć drukowanie

#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; 
} 

Odpowiedz

16

musisz założyć CURLOPT_WRITEFUNCTION aby go nie użyj stdout.

Wyjaśnienie jest tutaj (pod CURLOPT_WRITEFUNCTION): http://curl.haxx.se/libcurl/c/curl_easy_setopt.html

i tutaj (Under „Obsługa Easy libCurl): http://curl.haxx.se/libcurl/c/libcurl-tutorial.html

Zasadniczo dodanie funkcji:

size_t write_data(void *buffer, size_t size, size_t nmemb, void *userp) 
{ 
    return size * nmemb; 
} 

i dzwonienie pod numer

curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); 

Należy to zrobić.

-2

Co pracował dla mnie było za pomocą opcji CURLOPT_NOBODY w kodzie, określany tutaj: 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; 
} 
+0

Obserwowani to, bo wydawało się łatwiej niż inne rozwiązania, ale [dokumentacja] (https://curl.haxx.se/libcurl/c/CURLOPT_NOBODY.html) wyraźnie mówi, że 'dla HTTP (S), to sprawia, że ​​libcurl robi żądanie HEAD.", które zwykle bardzo często zmienia zachowanie programu. –

1

Nadal można uzyskać komunikaty diagnostyczne. Aby zatrzymać te albo zmienić lub dodać następujący wiersz:

curl_easy_setopt (curl, CURLOPT_VERBOSE, 0L); //0 disable messages