it-swarm.com.de

C / C ++ - HTTP-Clientbibliothek für eingebettete Projekte

Ich habe Seiten und Seiten mit Suchergebnissen in StackOverflow und Google durchsucht und bin auf sehr wenige C/C++ - HTTP-Clientbibliotheken gestoßen, die für eine ressourcenbeschränkte, eingebettete Umgebung (z. B. ein ARM) geeignet sind. Ich bin jedoch auf einige gestoßen, die für Anwendungen der Desktop-Klasse geeignet sind.

Im Wesentlichen bin ich nach einer einfachen, benutzerfreundlichen und bequemen API zum Erstellen von HTTP-GET, POST und HEAD Aufrufe (mit Unterstützung für Authentifizierung, Download resume and payload compression). Es wäre ideal, wenn es einen kleinen Footprint hätte (dh keine oder nur minimale externe Abhängigkeiten) und Open Source ist (mit einer zulässigen Lizenz).

Hier ist eine Liste dessen, worauf ich bisher gestoßen bin und warum sie nicht geeignet sind -

  • Locken - zu schwer
  • poco - zu schwer
  • Neon - GPL
  • qlibc - stützt sich auf POSIX-Bibliotheken
  • cpp-netlib - stützt sich auf Boost-Bibliotheken
  • serf - stützt sich auf die Apache Portable Runtime-Bibliothek
  • rdl - stützt sich auf Boost-Bibliotheken
  • HTTP-Client-C-API - vielversprechend, erfordert jedoch einen C++ - Wrapper

Gibt es da draußen Bibliotheken, von denen ich nichts weiß, oder bin ich besser dran, meine eigenen zu rollen?

36
thegreendroid

Haben Sie sich den HTTPClient auf mbed angesehen? Es sieht so aus, als gäbe es viele Gabeln eines Originals von vor einigen Jahren, die nicht gewartet wurden. Ich habe das nicht benutzt ...

http://mbed.org/users/WiredHome/code/HTTPClient/

13
escrafford

Ich kann nur beschreiben, was ich für diese Aufgaben verwendet habe.

curl - Wenn Sie faul sind, können Sie einfach eine integrierte Binärdatei herunterladen und haben nichts mehr zu tun. Sie enthält sehr einfache Überschriften und viele Beispiele. Sie benötigen 3-4 bereits erstellte Bibliotheken und Header. Ohne externe Abhängigkeiten. Also würde ich es als zu niedrig, aber überhaupt nicht als Schwergewicht bezeichnen.

boost.asio - sehr interessantes Paradigma der Realisierung, recht einfach und sauber. Aber ich würde sagen, es ist auch niedrig. Härter als locken . Und muss Boost verwenden, das ist externe Abhängigkeit, die Sie vermeiden möchten, denke ich.

poco - beste Lösung für http-Server. Nachdem Sie es mit Ihrer Anwendung verbunden haben, müssen Sie nur wenige virtuelle Funktionen implementieren und alle anderen Arbeiten (und das Thread-Management) erledigen. Poco bietet viele Funktionen für das Anwendungsmanagement, das Thread-/Prozessmanagement und ist sehr einfach, ich würde sogar sagen, dass es eine Java-ähnliche Oberfläche hat. Ja, es gibt eine externe Abhängigkeit von poco , aber ich würde dies als Chance betrachten, die perfekte Bibliothek zu erlernen. Dennoch ist es für http-Clients sehr schwer.

Das ist alles meine C++ - Erfahrung mit HTTP. Wenn Sie zählen, dass Sie nur Client benötigen und keine Abhängigkeiten benötigen, würde ich Ihnen anbieten, sich die libcurl Bibliothek anzuschauen. Es ist plattformübergreifend, einfach, unabhängig von Abhängigkeiten und niedrig genug, um alles zu erhalten, was Sie mit dem Netzwerk benötigen. Und wenn Sie Zeit haben - schauen Sie sich Poco an, ich glaube, Sie werden sich in diese Bibliothek genauso verlieben wie ich. Hoffe das wird hilfreich sein.

3
Arkady

Ich habe eine andere gefunden, die nur in eine Bibliothek gepackt werden muss. habe es nicht getestet, kann aber einen Blick wert sein:

https://github.com/reagent/http.git

3
Andik