Подтвердить что ты не робот

Клиентская библиотека HTTP/С++ для встроенных проектов

Таким образом, я прошел через страницы и страницы результатов поиска в StackOverflow и Google, и я столкнулся с очень немногими клиентскими библиотеками C/С++ HTTP, подходящими для среды с ограниченными ресурсами (например, ARM). Однако я столкнулся с некоторыми из них, которые подходят для приложений настольного класса.

По сути, я получаю простой, простой в использовании и удобный API для создания запросов HTTP GET, POST и HEAD (с поддержкой аутентификации, загрузки резюме и сжатия полезной нагрузки). Было бы идеально, если бы у него был небольшой размер (т.е. Отсутствие или минимальные внешние зависимости) и является открытым исходным кодом (с разрешительной лицензией).

Вот список того, что я до сих пор встречал и почему они не подходят -

  • curl - слишком тяжелый
  • poco - слишком тяжелый
  • neon - GPL
  • qlibc - использует библиотеки POSIX
  • cpp-netlib - использует библиотеки Boost
  • serf - полагается на Apache Portable Runtime library
  • urdl - использует библиотеки Boost
  • API клиента HTTP Client - многообещающий, но требует оболочки С++

Есть ли там какие-то библиотеки, о которых я не знаю, или мне лучше сворачивать мои собственные?

4b9b3361

Ответ 1

Вы посмотрели HTTPClient на mbed? Похоже, что несколько лет назад было много вилок оригинала, которые не поддерживались. Я не использовал это...

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

Ответ 2

Я могу просто описать, что я использовал для этих задач.

curl - если вы ленивы, вы можете просто загрузить встроенный двоичный файл и больше ничего не делать, у него очень простые заголовки и множество примеров. Вам понадобятся 3-4 уже построенные библиотеки и заголовок. Без внешних зависимостей. Таким образом, я считаю его слишком низкоуровневым, но не тяжелым.

boost.asio - очень интересная парадигма реализации, довольно простая и чистая. Но я бы сказал, что это тоже низкоуровневый. Труднее, чем закручиваться. И нужно использовать boost, то есть внешнюю зависимость, которую вы хотите избежать, я думаю.

poco - лучшее решение для http-сервера. Это высокий уровень, после того как вы присоединились к нему в своем приложении, вам просто нужно реализовать несколько виртуальных функций, выполнив всю работу (и управление потоками). Poco дает много материала для управления приложениями, управления потоками/процессами, и это очень просто и просто, я бы даже сказал, что у него есть Java-подобный интерфейс. Да, внешняя зависимость от poco, но я бы посмотрел на это как на возможность научиться отличной библиотеке. Тем не менее, для http-клиентов это действительно тяжело.

Это все мой опыт работы с С++ с HTTP. Считая, что вам нужен только клиент и не нужны зависимости, я бы предложил вам посмотреть библиотеку libcurl. Это кросс-платформенная, простая, без зависимостей и недостаточно низкого уровня, чтобы получить все необходимое в сети. И если у вас будет время - посмотрите на Поко, я действительно верю, что вы полюбите эту библиотеку, как я. Надеюсь, что это будет полезно.

Ответ 3

Я нашел еще один, который просто нужно упаковать в lib. не проверял его, но может стоить взгляда:

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