

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# coreHTTP 库
<a name="core-http"></a>

**注意**  <a name="out-of-date-message"></a>
此页面上的内容可能不是最新的。请参阅[FreeRTOS.org 图书馆页面](https://www.freertos.org/Documentation/03-Libraries/01-Library-overview/01-All-libraries)以获取最新更新。

**适用于小型 IoT 设备（MCU 或小型 MPU）的 HTTP C 客户端库**

## 简介
<a name="core-http-introduction"></a>

CoreHttp 库是[HTTP/1.1](https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol)标准子集的客户端实现。HTTP 标准提供了一种无状态协议，该协议在分布式 TCP/IP 、协作式超文本信息系统之上运行，通常用于分布式、协作式超文本信息系统。

CoreHttp 库实现了[HTTP/1.1](https://tools.ietf.org/html/rfc2616)协议标准的子集。该库已针对低内存占用空间进行了优化。该库提供了一个完全同步的 API，因此应用程序可以完全管理其并发性。它仅使用固定缓冲区，因此应用程序可以完全控制其内存分配策略。

[该库以 C 语言编写，旨在符合 [ISO C90 和 MISRA](https://en.wikipedia.org/wiki/ANSI_C#C90)。 C:2012](https://misra.org.uk/product/misra-c2012-third-edition-first-revision/)该库的唯一依赖关系是来自的 http-parser 的标准 C 库和 [LTS 版本 (v12.19.1)。](https://github.com/nodejs/node/tree/v12.19.1/deps/http_parser) Node.js该库有[证据](https://www.cprover.org/cbmc/)表明内存使用安全，没有堆分配，因此适用于 IoT 微控制器，但也完全可移植到其他平台。

在 IoT 应用中使用 HTTP 连接时，我们建议您使用安全的传输接口，例如，使用 TLS 协议的接口，如中 [coreHTTP 双向身份验证演示](core-http-ma-demo.md)所示。

该库可免费使用，并根据 [MIT 开源许可证](https://freertos.org/a00114.html)分发。


****  
<a name="coreHTTP-memory-estimate"></a>
<table>
<thead>
  <tr><th colspan="3">CoreHttp 的代码大小（使用适用于 ARM 的 GCC 生成的示例） Cortex-M</th></tr>
  <tr><th>文件</th><th>使用 -O1 优化</th><th>使用 -Os 优化</th></tr>
</thead>
<tbody>
  <tr><td>core_http_client.c</td><td>3.2K</td><td>2.6K</td></tr>
  <tr><td>api.c (llhttp)</td><td>2.6K</td><td>2.0K</td></tr>
  <tr><td>http.c (llhttp)</td><td>0.3K</td><td>0.3K</td></tr>
  <tr><td>http.c (llhttp)</td><td>17.9</td><td>15.9</td></tr>
  <tr><td><b>估计总数</b></td><td><b>23.9K</b></td><td><b>20.7K</b></td></tr>
</tbody>
</table>
