А начнем мы, конечно же, с официального сайта. На нем написано, что cURLpp — библиотека-обертка для языка С++ на библиотеку curl — удобную утилиту и одноименную библиотеку для работы с сетью.
Установка
Перед тем как работать непосредственно с curlpp, нужно установить libcurl. В большинстве дистрибутивов она есть в репозитории, но все-таки предпочтительнее брать её из исходников — благо установка легкая, зато вы будете знать что конкретно вы ставить. Хотя это дело вкуса.
Для начала, желательно установить openssl. Без него будут недоступны функции с зашифрованным соединением.
Итак, сначала скачаем архив исходников с curl.haxx.se/download.html
На момент написания статьи это был curl-7.20.0.tar.gz
Код: Выделить всё
$ mkdir curl && cd curl
$ wget curl.haxx.se/download/curl-7.20.0.tar.gz
$ tar xfv curl-7.20.0.tar.gz
$ cd curl-7.20.0
Код: Выделить всё
$ ./configure
Код: Выделить всё
$ ./configure --prefix=/path/to/install/
Код: Выделить всё
$ make
$ sudo make install
Теперь приступаем к установке curlpp.
Качаем последнюю версию:
Код: Выделить всё
$ wget curlpp.googlecode.com/files/curlpp-0.7.3.tar.gz
$ cd… && mkdir curlpp && cd curlpp
$ tar xfv curlpp-0.7.3.tar.gz
$ cd curlpp-0.7.3
Код: Выделить всё
$ ./configure
$ make
$ sudo make install
Теперь можно приступать непосредственно к программированию
Теория и практика
Компиляция
Для того чтобы упростить указание компилятору путь к библиотеке и заголовочным файлам, была создана утилита curlpp-config
Код: Выделить всё
$ curlpp-config --cflags
Код: Выделить всё
$ curlpp-config --libs
Соответственно, для компиляции файла somefile.cpp нужно дать такую команду:
Код: Выделить всё
$ g++ somefile.cpp `curlpp-config --cflags` `curlpp-config --libs`
Рассмотрим easy-интерфейс. Работа через него очень проста и удобна.
Для начала подключим заголовки
Код: Выделить всё
#include <curlpp/cURLpp.hpp>
#include <curlpp/Easy.hpp>
#include <curlpp/Options.hpp>
Код: Выделить всё
using namespace cURLpp;
using namespace Options;
using namespace types;
using namespace std;
Код: Выделить всё
curlpp::Easy request;
Для начала нужно создать объект URL
Код: Выделить всё
curlpp::options::Url uHabr(std::string(«m.habrahabr.ru»));
Код: Выделить всё
request.setOpt(uHabr);
Код: Выделить всё
request.setOpt( Url(«m.habrahabr.ru») );
request.setOpt( UserAgent(«Curl-Testing Agent») );
Код: Выделить всё
std::string RequestAnswer;
…
size_t WriteStringCallback(char* ptr, size_t size, size_t nmemb)
{
size_t realsize = size * nmemb;
RequestAnswer.append(ptr,realsize);
return realsize;
}
Код: Выделить всё
WriteFunctionFunctor functor(WriteMemoryCallback);
WriteFunction* cb = new curlpp::options::WriteFunction(functor);
request.setOpt(cb);
Выполняем perform — все указанные опции будут применены.
Код: Выделить всё
request.perform();
Поздравляю! Мы написали программу, которая скачивает данные по указаному адресу!
Компилировать его нужно просто коммандой
Код: Выделить всё
$ g++ test.cpp `curlpp-config --cflags` `curlpp-config --libs`
(c) хабрахабр