kostenloser Webspace werbefrei: lima-city


cURL Website Content speichern

lima-cityForumProgrammiersprachenC/C++ und D

  1. Autor dieses Themas

    stef264

    stef264 hat kostenlosen Webspace.

    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?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. fhtml << curl_easy_cleanup(curl) << endl;

    ... funktioniert nicht, weil
    curl_easy_cleanup(curl)
    keinen Rückgabewert hat (void).

    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
    write_data
    eine Funktion mit folgender Signatur:
    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)
  4. Autor dieses Themas

    stef264

    stef264 hat kostenlosen Webspace.

    Das ergibt aber bei mir eine Fehlermeldung (IDE: Visual Studio 2010)

    Warnung 1 warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. c:\curl\main.cpp 15 1 cURL
  5. 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
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!