2010-08-26 15 views
10

deaktivieren bekam ich ein kleines Programm von http://curl.haxx.se/ und während ich es laufen druckt immer die Webseite Wie kann ich die Druckfunktionlib curl in C++ Drucken

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

Antwort

16

Sie müssen deaktivieren Sie eine CURLOPT_WRITEFUNCTION einzurichten, damit es nicht Verwenden Sie stdout.

Es gibt eine Erklärung hier (unter CURLOPT_WRITEFUNCTION): http://curl.haxx.se/libcurl/c/curl_easy_setopt.html

und hier (unter „den Easy Libcurl Handling): http://curl.haxx.se/libcurl/c/libcurl-tutorial.html

Grundsätzlich Hinzufügen der Funktion:

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

und Rufen

curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); 

Sollte es tun.

-2

Was für mich gearbeitet wurde in den Code der CURLOPT_NOBODY Option, hier verwiesen: 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

Vorangegangen war, weil es einfacher ist als die andere Lösung schien aber die [Dokumentation] (https://curl.haxx.se/libcurl/c/CURLOPT_NOBODY.html) sagt explizit, dass 'Für HTTP (S), dass libcurl eine HEAD-Anfrage macht ', die normalerweise das Programmverhalten stark verändert. –

1

Sie noch Diagnosemeldungen erhalten können. Um diese entweder ändern oder fügen Sie die folgende Zeile zu stoppen:

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