嵌入式项目的C/C++ HTTP客户端库

42

所以我在StackOverflow和Google上浏览了许多页面的搜索结果,但很少有适用于资源受限的嵌入式环境(例如ARM)的C/C++ HTTP客户端库。但是我找到了一些适用于桌面应用程序的库。

基本上,我需要一个简单易用且方便的API,以进行HTTP GET、POST和HEAD调用(支持身份验证、下载恢复和有效负载压缩)。最好它具有小的占用空间(即没有或最小的外部依赖项)并且是开源的(带有宽松的许可证)。

这是我目前使用的一些库及其不合适之处 -

是否有我不知道的库或者是我最好自己编写一个?


2
在我使用嵌入式和受限设备的HTTP客户端经验中,我自己开发了一个简单的C语言HTTP客户端库。所有上述解决方案都太重或者有太多依赖。Paolo。 - ppatierno
ppatierno,你自己完全实现了HTTP 1.1协议吗? - Optimus1
3个回答

14

看起来很有前途!我会试一下的,谢谢! - thegreendroid
这个可以用,只需要稍微调整一下,谢谢! - thegreendroid
6
我正在谷歌上搜索类似于这样的内容,结果发现作者就在我工作的同一栋楼里... - weberc2

4

我只能描述我用来完成这些任务的工具。

curl - 如果你很懒,可以直接下载内置二进制文件,无需额外处理,它有非常简单的头文件以及大量示例。你需要3-4个已构建好的库和头文件,没有外部依赖。所以,我认为它是过于底层了,但绝不算重量级。

boost.asio -非常有趣的实现范式,相当容易和清晰。但我会说它也是底层的。比curl更难。并且需要使用boost作为外部依赖,我猜你想避免这种情况。

poco - 最佳的http服务器解决方案。它是高级别的,在将其加入应用程序后,你只需要实现几个虚函数,其他所有工作(包括线程管理)都处理好了。Poco提供了许多应用程序管理、线程/进程管理方面的内容,非常简单易用,我甚至会说它具有类似java的接口。是的,需要外部依赖poco,但我认为可以把这看作一个学习完美库的机会。然而,对于Http客户端来说,它确实非常重。

这是我在使用HTTP时的全部C++经验。如果你只需要客户端且不需要依赖项,我建议你看看libcurl库。它跨平台、易用、没有依赖关系,并且足够低级以满足网络所需。如果你有时间 - 看看Poco,真的,我相信你会像我一样爱上这个库。


谢谢回答!不过这些库对于我正在处理的项目来说确实太笨重了,我无法证明引入如此庞大的库是合理的。 - thegreendroid

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接