Created
May 29, 2019 05:49
-
-
Save vanessaaleung/f01dcd1dbc9da42b1aea9ab2513789b1 to your computer and use it in GitHub Desktop.
Main function
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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