用于嵌入式项目的 C/C++ HTTP 客户端库 [关闭]

Posted

技术标签:

【中文标题】用于嵌入式项目的 C/C++ HTTP 客户端库 [关闭]【英文标题】:C/C++ HTTP Client Library for Embedded Projects [closed] 【发布时间】:2014-07-13 14:10:17 【问题描述】:

因此,我在 *** 和 Google 上搜索了一页又一页的搜索结果,但我发现适用于资源受限的嵌入式环境(例如 ARM)的 C/C++ HTTP 客户端库很少。不过,我遇到过不少适合桌面级应用程序的。

基本上,我追求一个简单、易于使用和方便的 API 来进行 HTTP GET、POST 和 HEAD 调用(支持身份验证、下载恢复和有效负载压缩)。如果它占用空间小(即没有或最小的外部依赖项)并且是开源的(具有许可许可证),那将是理想的。

这里列出了我迄今为止遇到的内容以及它们不适合的原因 -

curl - 太重量级了 poco - 太重量级了 neon - GPL qlibc - 依赖于 POSIX 库 cpp-netlib - 依赖于 Boost 库 serf - 依赖于 Apache Portable Runtime 库 urdl - 依赖于 Boost 库 HTTP Client C API - 很有希望,但需要 C++ 包装器

有没有我不知道的库,或者我最好自己滚动?

【问题讨论】:

在我使用嵌入式和受限设备的 HTTP 客户端体验期间,我自己用 C 语言开发了一个简单的 HTTP 客户端库。上面所有的解决方案都是重量级的,或者它们有太多的依赖。保罗。 ppatierno,你自己完全实现了http 1.1协议吗? 【参考方案1】:

您看过 mbed 上的 HTTPClient 了吗?看起来有很多几年前的原件没有维护。这个我没用过……

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

【讨论】:

看起来很有希望!我试试看,谢谢! 这个绝对可以用一些调整,谢谢! 我在谷歌上搜索类似的东西,结果发现作者和我在同一栋楼里工作......【参考方案2】:

我只能描述我用于这些任务的东西。

curl - 如果你很懒,你可以直接下载内置的二进制文件,不用做更多的事情,它有非常简单的标题和很多例子。您将需要 3-4 个已构建的库和标头。没有外部依赖。所以,我会认为它太低级了,但根本算不上重量级。

boost.asio - 非常有趣的实现范例,非常简单和干净。但我会说它也是低级的。比 curl 更难。并且需要使用boost,我猜这是你想要避免的外部依赖。

poco - http 服务器的最佳解决方案。它是高级别的,将它加入应用程序后,您只需要实现一些虚拟功能,完成所有其他工作(和线程管理)。 Poco 为应用程序管理、线程/进程管理提供了很多东西,而且它非常简单易用,我什至可以说它具有类似 java 的界面。是的,poco 存在外部依赖性,但我认为这是一个学习完美库的机会。不过,对于 http 客户端来说,它确实很重。

这就是我对 HTTP 的所有 C++ 经验。算上您只需要客户端而不需要依赖项,我会建议您查看 libcurl 库。它是跨平台的、简单的、没有依赖关系的,并且足够低级,可以通过网络获得您所需要的一切。如果你有时间 - 看看 Poco,真的,我相信你会像我一样爱上这个图书馆。 希望这会有所帮助。

【讨论】:

感谢您的回答!这些库对于我正在从事的项目来说确实太重了,但我无法证明引入如此庞大的库是合理的。【参考方案3】:

我找到了另一个,只需要打包到一个库中。 没有测试它,但可能值得一看:

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

【讨论】:

以上是关于用于嵌入式项目的 C/C++ HTTP 客户端库 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

嵌入式应用的超轻量级高性能的 C/C++ 日志库

嵌入式应用的超轻量级高性能的 C/C++ 日志库

C/C++ 操作ini文件(SinpleIni 跨平台库)

C/C++使用libcurl库发送http请求(get和post可以用于请求html信息,也可以请求xml和json等串)

C/C++ HTTP 库,只处理逻辑?

用于C / C ++应用程序的开源PDF库? [关闭]