不使用libcurl

时间:2018-04-24 10:10:45

标签: c rest api libcurl cortex-m

我试图从C进行REST调用;遇到了libcurl,它成功地动态地完成了这项工作。但是代码需要移植到Cortex M0板上,这需要更小的占用空间。有没有解决方法?我只需要从C进行REST API调用,而无需任何外部库或开销。

1 个答案:

答案 0 :(得分:7)

嗯,你想要多低?

C对REST没有任何了解,它不知道HTTP,甚至不知道TCP或网络接口之类的东西。在裸机上,您首先要阅读网络接口卡的硬件规格并对其进行编程(通过端口,内存映射寄存器等等) - 您必须了解ARP,IP ,ICMP等(当然,实现它),只是为了获得TCP连接。

假设有一个操作系统,您将获得一些API,那么答案将取决于此API允许的内容。典型的级别是"套接字抽象",就像BSD套接字一样,它为您提供了建立TCP连接的功能。所以,"所有"您必须要做的就是实现HTTP客户端。

不幸的是,HTTP本身是一个复杂的协议。您必须实现所需的所有请求,包括内容类型,传输编码等,并且还要适当地处理所有可能的服务器响应。这些很多。将内容协商带到桌面,部分回复等......它是无止境的"工作。这就是像curl这样的库已经为你实现所有这些的原因。

所以,很遗憾地说,但是没有简单的答案可以在这里给你你想要的东西。如果您想完成工作,请使用库。也许你可以找到比libcurl更小的东西。

可以做的是自己编译库,静态链接它并使用编译器选项,如gcc' s -ffunction-sections -fdata-sections和链接器选项{{ 1}}尝试从您不使用的库中删除代码,可能有助于缩小尺寸。