c++ c http embedded client

curl c++



Biblioteca de cliente HTTP C/C++ para proyectos incrustados (3)

Así que he recorrido páginas y páginas de resultados de búsqueda en StackOverflow y Google y he encontrado muy pocas bibliotecas de clientes C / C ++ HTTP adecuadas para un entorno incrustado y con recursos limitados (por ejemplo, un ARM). Sin embargo, he encontrado bastantes que son adecuados para aplicaciones de clase de escritorio.

Básicamente, busco una API simple, fácil de usar y conveniente para realizar llamadas HTTP GET, POST y HEAD (con soporte para autenticación, descarga de currículums y compresión de cargas útiles). Sería ideal si tuviera una huella pequeña (es decir, sin o con dependencias externas mínimas) y es de código abierto (con una licencia permisiva).

Aquí hay una lista de lo que he encontrado hasta ahora y por qué no son adecuados.

  • curl - demasiado pesado
  • poco - demasiado pesado
  • neon - GPL
  • qlibc - depende de las bibliotecas POSIX
  • cpp-netlib - confía en las bibliotecas Boost
  • serf - se basa en la biblioteca de Apache Portable Runtime
  • urdl - depende de las bibliotecas de Boost
  • HTTP Client C API : prometedor pero requiere un envoltorio de C ++

¿Hay bibliotecas por ahí que desconozco o me conviene más?




Puedo describir lo que usé para esas tareas.

curl : si eres perezoso, solo puedes descargar en binario construido y no tienes nada que hacer, tiene encabezados muy simples y muchos ejemplos. Necesitará 3-4 bibliotecas y encabezado ya construidos. Sin dependencias externas. Por lo tanto, lo consideraría un nivel demasiado bajo, pero no de peso pesado en absoluto.

boost.asio - paradigma de realización muy interesante, bastante fácil y limpio. Pero yo diría que es de bajo nivel también. Más duro entonces rizo . Y necesita usar boost, esa es la dependencia externa que quiere evitar, supongo.

poco - la mejor solución para el servidor http. Es de alto nivel, después de que lo unió a su aplicación, solo necesita implementar algunas funciones virtuales, teniendo todo el resto del trabajo (y administración de subprocesos) hecho. Poco da muchas cosas para la gestión de aplicaciones, gestión de procesos / subprocesos y es muy simple y fácil, incluso diría que tiene una interfaz similar a Java. Sí, hay una dependencia externa a poco , pero me gustaría ver esto como una oportunidad para aprender la biblioteca perfecta. Aún así, para los clientes http es muy pesado.

Esa es toda mi experiencia en C ++ con HTTP. Teniendo en cuenta que solo necesita un cliente y no necesita dependencias, le ofrecería consultar la biblioteca libcurl . Es multiplataforma, fácil, sin dependencias y lo suficientemente bajo para obtener todo lo que necesita con la red. Y si tiene tiempo, mire a Poco, realmente, creo que se enamorará de esta biblioteca como lo hice yo. Espero que sea de ayuda.