homepage: http://curl.haxx.se/
download: http://curl.haxx.se/download.html
latest version: latest:curl-7.19.5
libcurl: http://curl.haxx.se/libcurl/
all about libcurl with C: http://curl.haxx.se/libcurl/c/
You must include:
<curl/curl.h>
compile
gcc libcurl1.c -o libcurl1 -lcurl
important structures:
CURL *curl;
CURLcode curl_res;
CURLINFO info;
Start a libcurl easy session
curl = curl_easy_init();
see more info: http://curl.haxx.se/libcurl/c/curl_easy_init.html
set options for a curl easy handle
curl_easy_setopt(CURL *handle, CURLoption option, parameter);
CURLOPT_WRITEDATA Data pointer to pass to the file write function
curl_easy_setopt(curl, CURLOPT_WRITEDATA, tmp);
tmp: FILE handle
set proxy
curl_easy_setopt(curl, CURLOPT_PROXY, pxy);
Perform a file transfer
curl_easy_perform(CURL * handle );
End a libcurl easy session
curl_easy_cleanup(curl);
set an url
curl_easy_setopt(curl, CURLOPT_URL, url);
set file handle, where the data get writed
curl_easy_setopt(curl, CURLOPT_WRITEDATA, tmp);
download the page
curl_res = curl_easy_perform(curl);
get http status code
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &http_code);
get size of downloaded page
curl_easy_getinfo(curl, CURLINFO_SIZE_DOWNLOAD, &c_length);
sample: libcurl1.c
##########################################
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <fcntl.h>
#include <stdlib.h>
#include <curl/curl.h>
int main() {
CURL *curl;
CURLcode curl_res;
CURLINFO info;
long http_code;
double c_length;
FILE *tmp;
tmp=fopen("/tmp/google_index.html", "w");
if(tmp==NULL) {
printf("ERROR to open file /tmp/google_index.html\n");
exit(2);
}
printf("init curl session\n");
curl = curl_easy_init();
printf("set url to download\n");
curl_easy_setopt(curl, CURLOPT_URL, "http://www.google.de/index.html");
printf("set file handler to write\n");
curl_easy_setopt(curl, CURLOPT_WRITEDATA, tmp);
printf("download the file\n");
curl_res = curl_easy_perform(curl);
if(curl_res==0) {
printf("file downloaded\n");
} else {
printf("ERROR in dowloading file\n");
fclose(tmp);
curl_easy_cleanup(curl);
}
printf("get http return code\n");
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &http_code);
printf("http code: %lu\n", http_code);
printf("get size of download page\n");
curl_easy_getinfo(curl, CURLINFO_SIZE_DOWNLOAD, &c_length);
printf("length: %g\n", c_length);
printf("END: close all files and sessions\n");
fclose(tmp);
curl_easy_cleanup(curl);
return 0;
}
##########################################
./libcurl1
init curl session
set url to download
set file handler to write
download the file
file downloaded
get http return code
http code: 200
get size of download page
length: 6969
END: close all files and sessions
thanks easy to understand
AntwortenLöschenindeed a good tutorial.
AntwortenLöschenThanks, this was a great tutorial :)
AntwortenLöschenGreat tutorial, just the stuff I needed! THX
AntwortenLöschen