From 7355004fe46fc6bba1da254ef37b64be0d77d532 Mon Sep 17 00:00:00 2001 From: Kyle K Date: Thu, 17 Nov 2011 17:20:22 -0600 Subject: add 2 curl examples --- curl_tofile.c | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 curl_tofile.c (limited to 'curl_tofile.c') diff --git a/curl_tofile.c b/curl_tofile.c new file mode 100644 index 0000000..7cd25ca --- /dev/null +++ b/curl_tofile.c @@ -0,0 +1,59 @@ +#include +#include + +size_t write_data(char *ptr, size_t size, size_t nmemb, void *userdata) +{ + /* return size * nmemb; */ + return fwrite(ptr, size, nmemb, (FILE *) userdata); +} + +int main(int argc, char **argv) +{ + if (argc != 2) + { + fprintf(stderr, "usage: %s \n", argv[0]); + return 1; + } + + CURL *curl_handle; + CURLcode ret; + + curl_handle = curl_easy_init(); + if (curl_handle) + { + curl_easy_setopt(curl_handle, CURLOPT_URL, argv[1]); + curl_easy_setopt(curl_handle, CURLOPT_HEADER, 1L); + /* 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"); + char err_buff[CURL_ERROR_SIZE]; + curl_easy_setopt(curl_handle, CURLOPT_ERRORBUFFER, err_buff); + /* send all data to this function */ + curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, write_data); + + /* by default passes NULL aka stdout */ + FILE *fl; + if ((fl = fopen("dump.curl", "w"))) + curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, fl); + else + curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, stdout); + + if ((ret = curl_easy_perform(curl_handle)) != CURLE_OK) + fprintf(stderr, "%s\n", err_buff); + else + { + /* ask for the content-type */ + char *ct; + ret = curl_easy_getinfo(curl_handle, CURLINFO_CONTENT_TYPE, &ct); + if ((CURLE_OK == ret) && ct) + printf("Content-Type: %s\n", ct); + } + + /* always cleanup */ + fclose(fl); + curl_easy_cleanup(curl_handle); + } + + return 0; +} + -- cgit v1.2.3