tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von deepthroat
ERLEDIGT
JA
ANTWORTEN
4
ZUGRIFFE
400
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Shooter2k
    Shooter2k Shooter2k ist offline Mitglied Brokat
    Registriert seit
    Mar 2002
    Ort
    Hamburg
    Beiträge
    381
    Hallo liebes Forum,
    ich habe ein kleines Problem. Ich möchte das cURL Result in einen String speichern. Mein bisheriger Code sieht so aus:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    CURL *curl;
    CURLcode res;
     
        curl = curl_easy_init();
        if(curl) {
            curl_easy_setopt(curl, CURLOPT_URL, "http://www.test.de");
            res = curl_easy_perform(curl);
            
            curl_easy_cleanup(curl);
        }

    So wie es aussieht wird der Code in die Variable "res" gespeichert. Ich weis allerdings nicht was das für ein Typ ist. Ich brauche unbedingt das Result als String. Kann mir jemand helfen?

    Vielen Dank
    gruß
     
    Wer mit dem Strom schwimmt, erreicht die Quelle nie.

  2. #2
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.
    Zitat Zitat von Shooter2k Beitrag anzeigen
    So wie es aussieht wird der Code in die Variable "res" gespeichert. Ich weis allerdings nicht was das für ein Typ ist.
    Das brauchst du auch nicht genau wissen. Es ist allerdings irgendein Integer-Typ in dem ein Fehlercode kodiert ist. Siehe http://curl.haxx.se/libcurl/c/libcurl-errors.html
    Zitat Zitat von Shooter2k Beitrag anzeigen
    Ich brauche unbedingt das Result als String. Kann mir jemand helfen?
    Setze einfach CURLOPT_WRITEFUNCTION und CURLOPT_WRITEDATA. Dann schreibst du eine Callback-Funktion und kannst dort deinen String zusammenbauen. Ungefähr so:
    Code c:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    size_t append_string( char *ptr, size_t size, size_t nmemb, void *userdata) {
      if (ptr != NULL) {
        char *buf = (char*)userdata;
        memcpy(buf + strlen(buf), ptr, size);
        buf[strlen(buf) + size] = '\0';
      }
    }
     
    ...
     
    char buf[5000]; // oder malloc
    curl_easy_setopt(curl,  CURLOPT_WRITEFUNCTION, &append_string);
    curl_easy_setopt(curl,  CURLOPT_WRITEDATA, &buf);
    Gruß

    PS: Falls du C++ verwendest kannst du natürlich auch einen Zeiger auf einen std::string übergeben. Das macht die ganze Sache noch einfacher.
    Geändert von deepthroat (19.12.11 um 13:46 Uhr)
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  3. #3
    Avatar von Shooter2k
    Shooter2k Shooter2k ist offline Mitglied Brokat
    Registriert seit
    Mar 2002
    Ort
    Hamburg
    Beiträge
    381
    Hi deepthroat,
    danke für deine Antwort. Ich verwende C++. Kannst du mir kurz ein Beispiel mit dem "pointer" zeigen? Ich wollte es so einfach wie nur möglich machen.

    Vielen Dank
    gruß
     
    Wer mit dem Strom schwimmt, erreicht die Quelle nie.

  4. #4
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    size_t append_string( char *ptr, size_t size, size_t nmemb, void *userdata) {
      if (ptr != NULL) {
        std::string* str = reinterpret_cast<std::string*>(userdata);
        str->append(ptr, size * nmemb);
      }
      return (size * nmemb);
    }
     
    ...
     
    std::string str;
    curl_easy_setopt(curl,  CURLOPT_WRITEDATA, &str);
    Gruß
    Shooter2k bedankt sich. 
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  5. #5
    Avatar von Shooter2k
    Shooter2k Shooter2k ist offline Mitglied Brokat
    Registriert seit
    Mar 2002
    Ort
    Hamburg
    Beiträge
    381
    Vieeeeeeeeeeelen Dank. Es funktioniert :-D *freu*
     
    Wer mit dem Strom schwimmt, erreicht die Quelle nie.

Ähnliche Themen

  1. Antworten: 5
    Letzter Beitrag: 21.12.10, 08:47
  2. Antworten: 5
    Letzter Beitrag: 22.11.10, 17:31
  3. Antworten: 3
    Letzter Beitrag: 27.04.07, 14:01
  4. String aus HTML lesen CURL
    Von danielke im Forum PHP
    Antworten: 4
    Letzter Beitrag: 04.10.04, 20:47
  5. (?-?-?-?) RESULT: NaN
    Von Neurodeamon im Forum Javascript & Ajax
    Antworten: 18
    Letzter Beitrag: 03.03.04, 06:07

Stichworte