Hallo,
da ich regelmäßig Applikationen im HTTP-Bereich programmiere und ich C++ als Sprache favorisiere, suchte ich vor längerer Zeit eine Lösung. libcurl ist eine sehr starke Bibliothek die eigentlich alles liefert, was man möchte. Leider gibt es die Biblitohek nur für C. Der C++ Wrapper curlpp gefiel mir nicht, da er lange nicht mehr aktualisiert wurde, also beschloss ich, mir selbst einen zu schreiben. Ursprünglich war es nur eine easy Klasse, später wurde daraus immer mehr.
Ein simples Beispiel
Alles anzeigen
Lizenz
Der Wrapper benutzt die gleiche Lizenz, wie libcurl sie benutzt.
Download
Der Code liegt in einem öffentlichen Git-Repository bei Bitbucket.
To-Do
- Const correctness verbessern
- Templatespezialisierungen für curl::form, curl::header und std::string bei den curl::X::set_opt<T>() Methoden
- Dokumentation verfassen (momentan muss die libcurl Dokumentation herhalten)
Ich hoffe auf konstruktive Kritik und Verbesserungsvorschläge.
da ich regelmäßig Applikationen im HTTP-Bereich programmiere und ich C++ als Sprache favorisiere, suchte ich vor längerer Zeit eine Lösung. libcurl ist eine sehr starke Bibliothek die eigentlich alles liefert, was man möchte. Leider gibt es die Biblitohek nur für C. Der C++ Wrapper curlpp gefiel mir nicht, da er lange nicht mehr aktualisiert wurde, also beschloss ich, mir selbst einen zu schreiben. Ursprünglich war es nur eine easy Klasse, später wurde daraus immer mehr.
Ein simples Beispiel
C-Quellcode
- #include <iostream>
- #include <string>
- #include "curl/curl.hpp"
- int main()
- {
- curl::global::init();
- std::string buffer;
- try
- {
- curl::easy request;
- request.set_opt(CURLOPT_URL, "http://www.example.com");
- request.set_opt(CURLOPT_WRITEDATA, &buffer);
- request.set_opt(CURLOPT_WRITEFUNCTION, curl::write::to_string);
- request.perform();
- }
- catch (const curl::exception& e)
- {
- std::cerr << "Error: " << e.what() << ".\n";
- return 1;
- }
- std::cout << "Content: " << buffer << std::endl;
- curl::global::cleanup();
- }
Lizenz
Der Wrapper benutzt die gleiche Lizenz, wie libcurl sie benutzt.
COPYRIGHT AND PERMISSION NOTICE
Copyright (c) 2014, Delinquenz, delinquenz@live.de.
All rights reserved.
Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization of the copyright holder.
Download
Der Code liegt in einem öffentlichen Git-Repository bei Bitbucket.
To-Do
- Const correctness verbessern
- Templatespezialisierungen für curl::form, curl::header und std::string bei den curl::X::set_opt<T>() Methoden
- Dokumentation verfassen (momentan muss die libcurl Dokumentation herhalten)
Ich hoffe auf konstruktive Kritik und Verbesserungsvorschläge.