Skip to content

Instantly share code, notes, and snippets.

@vanessaaleung
Created May 29, 2019 05:49
Show Gist options
  • Save vanessaaleung/f01dcd1dbc9da42b1aea9ab2513789b1 to your computer and use it in GitHub Desktop.
Save vanessaaleung/f01dcd1dbc9da42b1aea9ab2513789b1 to your computer and use it in GitHub Desktop.
Main function
int main(void)
{
CURL *curl_handle, curl_handle2;
CURLcode res;
struct MemoryStruct chunk;
//malloc(size of memory blocks in bytes): allocates requested memory and returns pointer to it
chunk.memory = malloc(1); /* will be grown as needed by the realloc above */
chunk.size = 0; /* no data at this point */
//setting up the program environment libcurl needs, which acts like extension of library loader
curl_global_init(CURL_GLOBAL_ALL);
/* init the curl session */
/* curl_easy_init: returns a CURL easy handle as input to other functions,
must have a corresponding call to curl_easy_cleanup when operation completes */
curl_handle = curl_easy_init();
/* specify URL to get */
curl_easy_setopt(curl_handle, CURLOPT_URL, "https://www.example.com/");
/* send all data to this function */
curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
/* we pass our 'chunk' struct to the callback function */
curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void *)&chunk);
/* some servers don't like requests that are made without a user-agent
field, so we provide one */
curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, "libcurl-agent/1.0");
/* get it! */
res = curl_easy_perform(curl_handle);
/* check for errors */
if(res != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
}
else {
/*
* Now, our chunk.memory points to a memory block that is chunk.size
* bytes big and contains the remote file.
*
* Do something nice with it!
*/
printf("%lu bytes retrieved\n", (unsigned long)chunk.size);
}
/* cleanup curl stuff */
curl_easy_cleanup(curl_handle);
free(chunk.memory);
/* we're done with libcurl, so clean it up */
curl_global_cleanup();
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment