libcurl writefunction, erbitte Beispiel
-
Was ich versuche zu reichen ist, den Quelltext den mir folgender Code unter anderen inne Konsole schreibt in einem String zu speichern.
Das Problem dabei ist jedoch, das ich nicht weiß wie ich die Writefunction setzen kann, und die Seite von denen mir dabei auch nicht weiterhilft.
hier wird auch ein Prototyp angegeben, der sagt mir leider nichts
http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTWRITEFUNCTION
Für jegliche Hilfe wäre ich echt dankbar.
Mein relevanter Code
void Updater::Initialize(){ this->SetMainStatus("Checking for Updates"); CURL *curl = curl_easy_init(); if(curl){ this->SetMainStatus("Downloading Version Info"); curl_easy_setopt(curl, CURLOPT_URL, "http://empirephoenix.de/New_Horizons/Client/list.txt"); //curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, ); CURLcode res = curl_easy_perform(curl); }else{ this->SetMainStatus("Connection Failture"); } curl_easy_cleanup(curl); }
-
Hi.
Ich weiß nicht ob das auch in C++ geht, da curl in PHP jedoch nur ein Wrapper für libcurl ist sollte es gehen.http://de.php.net/manual/en/function.curl-setopt.php
Ich setze CURLOPT_RETURNTRANSFER immer auf 1 und dann funktionierts

Gruß
-
hm ne schade geht leider nicht, kennt er nicht

Mal sehen ob ich was im Wrapper finde was hilft (wobei meine php Kenntnisse gefährlich schlecht sind ^^)
-
// This is the writer call back function used by curl static int writer(char *data, size_t size, size_t nmemb, std::string *buffer) { // What we will return int result = 0; // Is there anything in the buffer? if (buffer != NULL) { // Append the data to the buffer buffer->append(data, size * nmemb); // How much did we write? result = size * nmemb; } return result; } // ... std::string buffer; curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writer); curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffer);
-
Super, danke funktioniert perfekt.
Was mich jedoch wundert, warum muss man sowohl CURLOPT_WRITEFUNCTION als auch CURLOPT_WRITEDATA benutzen? Die Writefunction kümmert sich ja schon um das schreiben in den buffer.
-
sry dass ich den alten text raushole. Aber ich habe da eine Frage dazu

// This is the writer call back function used by curl static int writer(char *data, size_t size, size_t nmemb, std::string *buffer) { // What we will return int result = 0; // Is there anything in the buffer? if (buffer != NULL) { // Append the data to the buffer buffer->append(data, size * nmemb); // How much did we write? result = size * nmemb; } return result; } // ... std::string buffer; curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writer); curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffer);Die Function "Writer" returned die größe wieviel geschrieben wurde oder ?
Was ich nicht verstehe ist, wo holt er den content der page her ?
"curl_easy_setopt" wird die Url uebergeben, mit curl (bzw. pointer auf die URL)
soweit richtig ?Quay suche ich eine Lösung, um den content einer page zu holen und diesen content in einem string zu speichern,

merci