cURL Website Content speichern
lima-city → Forum → Programmiersprachen → C/C++ und D
alternative code
aufruf
ausgabe
beschrieben url
bibliothek
code
datei
datum
detail
folgender signatur
funktion
http
option
passendes beispiel
re
see
set
url
warnung
windows
-
Ich habe eine Frage zu cURL. Mein ref="/tag/code">Code sieht jetzt so aus:
#include <stdio.h> #include <iostream> #include <curl/curl.h> #include <fstream> using namespace std; int main(void) { CURL *curl; CURLcode res; curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CURLOPT_URL, "curl.haxx.se"); res = curl_easy_perform(curl); /* Ausgabe der HTML Daten */ curl_easy_cleanup(curl); } cin.get(); return 0; }
Aber ich bekomme das ganze nur auf der Konsole zu sehen wie mache ich das damit ich das in eine datei schreiben kann.
fstream fhtml; fhtml.open("html.txt"); fhtml << curl_easy_cleanup(curl) << endl; fhtml.close();
funktioniert nicht.
Wenn es nicht geht kennt einer von euch eine cURL alternative?
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
fhtml << curl_easy_cleanup(curl) << endl;
... funktioniert nicht, weil
keinen Rückgabewert hat (void).curl_easy_cleanup(curl)
Die Ausgabe auf Console erfolgt beim Aufruf von
.res = curl_easy_perform(curl);
Wenn man dieses Verhalten ändern möchte, dann muss man die CURLOPT_WRITEFUNCTION setzen, z.B.curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
Dabei ist
eine Funktion mit folgender Signatur:write_data
size_t write_data(void *buffer, size_t size, size_t nmemb, void *userp);
Dies Funktion (callback) wird immer dann aufgerufen, wenn die cuRL-Bibliothek einen
neuen Satz Daten empfangen hat. Dort musst Du dann stückweise die Daten in eine
Datei schreiben (append).
Hier ist ein passendes Beispiel: http://www.c-plusplus.de/forum/viewtopic-var-t-is-262216.html
Es geht evtl. noch einfacher, wenn man ein Filehandle verwendet... (aber nicht unter Windows.)
Die Details sind viel genauer hier beschrieben: http://curl.haxx.se/libcurl/c/libcurl-tutorial.html (unter: Handle the Easy libcurl) -
MS will damit lobenswerter weise sagen, dass fopen unsicher ist und man fopen_s verwenden sollte.
Wie sieht denn das Programm im Moment aus? Zeile 15 sagt mir so nichts.
Allerdings steht auch in der Doku, dass FILE* unter Windows nicht funktioniert.
If you're using libcurl as a win32 DLL, you MUST use the CURLOPT_WRITEFUNCTION if you set this option or you will experience crashes.
Update: Mit "this option" ist CURLOPT_WRITEDATA gemeint.
Beitrag zuletzt geändert: 18.9.2010 16:30:11 von auja -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage