Implementing libcurl
Jump to navigation
Jump to search
libcurl is a free library that can download data from the internet. It supports just about every protocol imaginable, and is available under a MIT/X derivative license.
Implementation
Windows
- Download the latest version of libcurl.
- Extract the
\liband\includefolders to a convenient location. - Open libcurl's VS project and change it to Release mode.
- Go to libcurl > Properties > C/C++ > Preprocessor > Definitions and add
CURL_STATICLIB. Unless you really do want to use LDAP, addHTTP_ONLYtoo. - Go to libcurl > Properties > C/C++ > Code Generation > Runtime Library and change it to read
Multi-threaded (/MT). - Build libcurl.
- Add
libcurl.libto your main project. The easiest way is to drag it onto the Solution Explorer. - Go to Your Project > Properties > C/C++ > Preprocessor > Definitions and add
CURL_STATICLIB, as you did to curl itself. - Go to Your Project > Properties > C/C++ > General > Additional Include Directories and add the libcurl
\includefolder you extracted earlier. - Go to Your Project > Linker > Input > Additional Dependencies and add
ws2_32.lib. If you want to use LDAP, addwldap32.libas well. #include "curl/curl.h"and start coding!
Linux
[Todo]
Usage
Here is how to write the contents of a web page to the console:
#include "curl/curl.h"
// Called when curl receives data from the server
static size_t rcvData(void *ptr, size_t size, size_t nmemb, void *userdata)
{
Msg((char*)ptr); // up to 989 characters each time
return size * nmemb;
}
void PrintPage()
{
CURL *curl;
curl = curl_easy_init();
curl_easy_setopt(curl, CURLOPT_URL, "developer.valvesoftware.com");
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, rcvData);
curl_easy_perform(curl);
curl_easy_cleanup(curl);
}
ConCommand print_page("print_page", PrintPage);