C/C++-HTTP-Clientbibliothek für eingebettete Projekte [closed]

Lesezeit: 4 Minuten

Benutzeravatar von thegreendroid
der grüne Droide

Also habe ich Seiten und Seiten mit Suchergebnissen auf StackOverflow und Google durchforstet und bin auf sehr wenige C/C++-HTTP-Client-Bibliotheken 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 auf der Suche nach einer einfachen, benutzerfreundlichen und bequemen API, um HTTP GET-, POST- und HEAD-Aufrufe durchzuführen (mit Unterstützung für Authentifizierung, Download-Wiederaufnahme und Nutzdatenkomprimierung). Es wäre ideal, wenn es einen geringen Platzbedarf hätte (dh keine oder minimale externe Abhängigkeiten) und Open Source wäre (mit einer freizügigen Lizenz).

Hier ist eine Liste dessen, was ich bisher gefunden habe und warum sie nicht geeignet sind –

  • kräuseln – zu schwer
  • poko – zu schwer
  • Neon- – GPL
  • qlibc – stützt sich auf POSIX-Bibliotheken
  • cpp-netlib – stützt sich auf Boost-Bibliotheken
  • Leibeigene – stützt sich auf die Apache Portable Runtime-Bibliothek
  • url – stützt sich auf Boost-Bibliotheken
  • HTTP-Client-C-API – vielversprechend, erfordert aber einen C++-Wrapper

Gibt es irgendwelche Bibliotheken da draußen, die ich nicht kenne, oder sollte ich besser meine eigene entwickeln?

  • Während meiner HTTP-Client-Erfahrung mit eingebetteten und eingeschränkten Geräten habe ich selbst eine einfache HTTP-Client-Bibliothek in C entwickelt. Alle oben genannten Lösungen sind schwergewichtig oder haben zu viele Abhängigkeiten. Paolo.

    – ppatierno

    26. Mai 2014 um 6:58 Uhr

  • ppatierno, hast du das http 1.1 protokoll selbst vollständig implementiert?

    – Optimus1

    11. Oktober 2021 um 11:11 Uhr

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

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

  • Das sieht vielversprechend aus! Das werde ich ausprobieren, danke!

    – der grüne Droide

    26. Mai 2014 um 8:18 Uhr

  • Dieser ist definitiv mit ein paar Änderungen verwendbar, danke!

    – der grüne Droide

    21. Juni 2014 um 6:08 Uhr

  • Ich habe nach so etwas gegoogelt, und es stellt sich heraus, dass der Autor im selben Gebäude wie ich arbeitet …

    – weberc2

    9. April 2015 um 13:06 Uhr

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

kräuseln – Wenn Sie faul sind, können Sie einfach die eingebaute Binärdatei herunterladen und müssen nichts weiter tun, sie hat sehr einfache Header und viele Beispiele. Sie benötigen 3-4 bereits erstellte Bibliotheken und Header. Ohne externe Abhängigkeiten. Ich würde es also als zu niedrig, aber überhaupt nicht schwergewichtig einstufen.

boost.asio – sehr interessantes Realisierungsparadigma, ganz einfach und sauber. Aber ich würde sagen, es ist auch auf niedrigem Niveau. Dann schwerer kräuseln. Und muss Boost verwenden, das ist externe Abhängigkeit, die Sie vermeiden möchten, denke ich.

poko – beste Lösung für HTTP-Server. Es ist ein hohes Niveau, 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 eine Menge Zeug für Anwendungsmanagement, Thread-/Prozessmanagement und es ist sehr einfach und leicht, ich würde sogar sagen, es hat eine Java-ähnliche Schnittstelle. Ja, es besteht eine externe Abhängigkeit poko, aber ich würde dies als eine Chance betrachten, die perfekte Bibliothek zu lernen. Dennoch ist es für HTTP-Clients wirklich schwer.

Das ist meine ganze C++-Erfahrung mit HTTP. Wenn Sie davon ausgehen, dass Sie nur Clients benötigen und keine Abhängigkeiten benötigen, würde ich Ihnen anbieten, sie sich anzusehen libcurl Bibliothek. Es ist plattformübergreifend, einfach, ohne Abhängigkeiten und niedrig genug, um alles zu bekommen, was Sie mit dem Netzwerk brauchen. Und wenn Sie Zeit haben – schauen Sie sich Poco an, wirklich, ich glaube, Sie werden sich in diese Bibliothek genauso verlieben wie ich. Hoffe, das wird hilfreich sein.

  • Danke für die Antwort! Diese Bibliotheken sind wirklich zu schwer für das Projekt, an dem ich arbeite, aber ich kann es einfach nicht rechtfertigen, eine so riesige Bibliothek einzuziehen.

    – der grüne Droide

    26. Mai 2014 um 8:18 Uhr

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

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

1400100cookie-checkC/C++-HTTP-Clientbibliothek für eingebettete Projekte [closed]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy