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?
¿Has echado un vistazo al HTTPClient en mbed? Parece que hay muchos tenedores de un original de hace unos años que no se mantuvo. No he usado esto ...
Encontré otro, que solo necesita ser empaquetado en una lib. no lo probé, pero puede valer la pena mirarlo:
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.