1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
#include <stdio.h>
#include <stdlib.h>
#include <curl/curl.h>
#include <string>
static size_t write_data(void *ptr, size_t size, size_t nmemb, void *stream)
{
std::string* buf = reinterpret_cast<std::string*>(stream);
int written = size * nmemb;
buf->append (reinterpret_cast<char*>(ptr), written);
return written;
}
int main()
{
std::string *out = new std::string;
CURL *curl_handle;
curl_global_init(CURL_GLOBAL_ALL);
/* init the curl session */
curl_handle = curl_easy_init();
/* set URL to get */
curl_easy_setopt(curl_handle, CURLOPT_URL, "http://google.com");
/* no progress meter please */
curl_easy_setopt(curl_handle, CURLOPT_NOPROGRESS, 1L);
/* send all data to this function */
curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, write_data);
curl_easy_setopt (curl_handle, CURLOPT_FOLLOWLOCATION, 1L);
/* we want the body be written to this file handle instead of stdout */
curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, out);
/* get it! */
curl_easy_perform(curl_handle);
printf ("Response from server: \n\n%s", out->c_str());
/* cleanup curl stuff */
curl_easy_cleanup(curl_handle);
delete out;
return 0;
}
|