Handling responses in libcurl

10,765

This question shows you how to get the response data string

In short, you need to use curl_easy_setopt to set the option CURLOPT_WRITEFUNCTION to a callback function.

Share:
10,765
sfactor
Author by

sfactor

Dreamer, Analyst, Engineer, Programmer, Photographer.

Updated on June 04, 2022

Comments

  • sfactor
    sfactor almost 2 years

    i have a code to send a Form Post with login credentials to a webpage. it looks like this

    CURL *curl;
      CURLcode res;
    
      struct curl_httppost *formpost=NULL;
      struct curl_httppost *lastptr=NULL;
      struct curl_slist *headerlist=NULL;
      static const char buf[] = "Expect:";
    
      curl_global_init(CURL_GLOBAL_ALL);
    
      /* Fill in the username */
      curl_formadd(&formpost,
                 &lastptr,
                 CURLFORM_COPYNAME, "user",
                 CURLFORM_COPYCONTENTS, "username",
                 CURLFORM_END);
    
      /* Fill in the password */
      curl_formadd(&formpost,
                 &lastptr,
                 CURLFORM_COPYNAME, "pass",
                 CURLFORM_COPYCONTENTS, "password",
                 CURLFORM_END);
    
    
      /* Fill in the submit field too, even if this is rarely needed */ 
      curl_formadd(&formpost,
                   &lastptr,
                   CURLFORM_COPYNAME, "submit",
                   CURLFORM_COPYCONTENTS, "send",
                   CURLFORM_END);
    
      curl = curl_easy_init();
      /* initalize custom header list (stating that Expect: 100-continue is not
         wanted */ 
      headerlist = curl_slist_append(headerlist, buf);
      if(curl) {
        /* what URL that receives this POST */ 
        curl_easy_setopt(curl, CURLOPT_URL, "http://127.0.0.1:8000/index.html");
    
          /* only disable 100-continue header if explicitly requested */ 
          curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist);
        curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);
        res = curl_easy_perform(curl);
    
        /* always cleanup */ 
        curl_easy_cleanup(curl);
    
        /* then cleanup the formpost chain */ 
        curl_formfree(formpost);
        /* free slist */ 
        curl_slist_free_all (headerlist);
      }
    

    now i need to know is how do i handle the responses i get back from the server? i need to store the response into a string and then work on it.