Biblioteka kliencka C / C++ HTTP dla projektów wbudowanych [zamknięta]

Przeszukałem więc strony i strony wyników wyszukiwania na StackOverflow i Google i natknąłem się na bardzo niewiele bibliotek klientów HTTP C / C++ odpowiednich dla środowiska osadzonego z ograniczeniami zasobów (np. ARM). Mam jednak natknąć się na sporo, które nadają się do aplikacji klasy desktop.

Zasadniczo Szukam prostego, łatwego w użyciu i wygodnego API do wykonywania połączeń HTTP GET, POST i HEAD (z obsługą uwierzytelniania, pobierania CV i ładunku kompresji). Byłoby idealnie, gdyby miał niewielki ślad (tzn. brak lub minimalne zewnętrzne zależności) i był open-source (z licencją permisywną).

Oto lista tego, na co się do tej pory natknąłem i dlaczego nie są odpowiednie -

Czy są tam jakieś biblioteki, o których Nie wiem, czy lepiej będzie, jeśli zacznę tworzyć własne?

Author: thegreendroid, 2014-05-24

3 answers

Czy przyjrzałeś się HTTPClient na mbed? Wygląda na to, że jest wiele widelców oryginału sprzed kilku lat, który nie był konserwowany. Nie używałem tego...

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

 13
Author: escrafford,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-26 08:13:03

Mogę tylko opisać, co wykorzystałem do tych zadań.

Curl - Jeśli jesteś leniwy, możesz po prostu pobrać w zbudowanym pliku binarnym i nie mieć nic więcej do roboty, ma bardzo proste nagłówki i wiele przykładów. Będziesz potrzebował 3-4 już zbudowanych bibliotek i nagłówka. Bez zewnętrznych zależności. Więc uznałbym to za zbyt niski poziom, ale wcale nie ciężki.

Boost.asio - bardzo ciekawy paradygmat realizacji, dość łatwy i czysty. Ale powiedziałbym, że jest też na niskim poziomie. Mocniej wtedy curl . I trzeba użyć boost, czyli zewnętrznej zależności, której chcesz uniknąć, tak myślę.

Poco - najlepsze rozwiązanie dla serwera http. Jest to wysoki poziom, po dołączeniu go do aplikacji, wystarczy zaimplementować kilka wirtualnych funkcji, mając wszystkie inne prace (i zarządzanie wątkami) zrobione. Poco daje wiele rzeczy do zarządzania aplikacjami, zarządzania wątkami/procesami i jest bardzo proste i łatwe, powiedziałbym nawet, że ma Javę interfejs. Tak, istnieje zewnętrzna zależność od poco, ale potraktowałbym to jako szansę na nauczenie się doskonałej biblioteki. Jednak dla klientów http jest to naprawdę ciężkie.

To całe moje doświadczenie w C++ z HTTP. Licząc, że potrzebujesz tylko Klienta i nie potrzebujesz zależności, proponuję zajrzeć do libcurl biblioteki. Jest wieloplatformowy, łatwy, bez zależności i wystarczająco niski poziom, aby uzyskać wszystko, czego potrzebujesz z siecią. A jeśli będziesz miał czas-spójrz na Poco, naprawdę, wierzę zakochasz się w tej bibliotece tak jak ja. Mam nadzieję, że to pomoże.

 2
Author: Arkady,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-24 07:48:55

Znalazłem kolejny, który musi być spakowany do lib. nie testowałem, ale może warto zajrzeć:

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

 2
Author: Andik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-11 12:00:58