Created
March 31, 2015 06:44
-
-
Save whoshuu/2dc858b8730079602044 to your computer and use it in GitHub Desktop.
Example libcurl GET request
This file contains 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
#include <curl/curl.h> | |
#include <string> | |
size_t writeFunction(void *ptr, size_t size, size_t nmemb, std::string* data) { | |
data->append((char*) ptr, size * nmemb); | |
return size * nmemb; | |
} | |
int main(int argc, char** argv) { | |
auto curl = curl_easy_init(); | |
if (curl) { | |
curl_easy_setopt(curl, CURLOPT_URL, "https://api.github.com/repos/whoshuu/cpr/contributors?anon=true&key=value"); | |
curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1L); | |
curl_easy_setopt(curl, CURLOPT_USERPWD, "user:pass"); | |
curl_easy_setopt(curl, CURLOPT_USERAGENT, "curl/7.42.0"); | |
curl_easy_setopt(curl, CURLOPT_MAXREDIRS, 50L); | |
curl_easy_setopt(curl, CURLOPT_TCP_KEEPALIVE, 1L); | |
std::string response_string; | |
std::string header_string; | |
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writeFunction); | |
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response_string); | |
curl_easy_setopt(curl, CURLOPT_HEADERDATA, &header_string); | |
char* url; | |
long response_code; | |
double elapsed; | |
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response_code); | |
curl_easy_getinfo(curl, CURLINFO_TOTAL_TIME, &elapsed); | |
curl_easy_getinfo(curl, CURLINFO_EFFECTIVE_URL, &url); | |
curl_easy_perform(curl); | |
curl_easy_cleanup(curl); | |
curl = NULL; | |
} | |
} |
Suggest you switch the condition, writing:
if (not curl) { exit 1; } // or EXIT_FAILURE
so the rest of the code doesn't need the indentation and our brain stack can be empty.
can any body help me to run this code?
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
If
curl_easy_perform
fails with the codeCURL_SSL_CACERT
, consider addingcurl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, FALSE)
, but beware this makes your app less secure, and the proper solution is to set CURLOPT_CAINFO