使用ESP8266发送带有cookie的http请求

时间:2019-02-02 23:24:19

标签: arduino esp8266

我写了这个API: https://github.com/prp-e/iot-api-temp-humid 当我测试它时,我使用了以下命令:

curl -b cookies.txt http://localhost:8000/login/username/password 

,每次我想检查“环境”表中的数据时,我都会使用

curl -c cookies.txt http://localhost:8000/env/username

我需要将cookie存储在某个地方,或者每次ESP8266向API发送数据时都重新生成它们。有什么办法吗?

1 个答案:

答案 0 :(得分:1)

如果cookie数据较小(少于4096字节),则可以使用EEPROM类进行存储。请注意,ESP8266实际上没有EEPROM(通常是Arduinos拥有),因此这只是将数据写入其闪存的保留区域。请确保在编写后致电EEPROM.commit(),否则您的更改将不会被保存。 EEPROM文档包含一些有关如何使用它的示例的链接。

如果Cookie数据较大,则可以使用SPIFFS将其存储在文件中。通过SPIFFS,您可以将ESP8266闪存的一部分用作简单的文件系统。

ESP8266板通常具有低质量的闪存,最多只能处理数十万次写入,因此您不想频繁地写入闪存。例如,如果您每秒更新一次Flash中的cookie,那么在短短的一天之内,您将写入Flash 86,400次。在两天内,您很可能会耗尽用于存储Cookie值的闪存扇区。因此,请注意更改Cookie值的频率以及写入闪存的频率。

ESP8266还具有512字节的RAM与其实时时钟(RTC)相关联。此处存储的数据将在重新启动后持续存在,但是如果从芯片上断开电源,这些数据将丢失。由于它是正常的RAM而不是闪存,因此它没有磨损问题,可以安全地重写。 Here's an example的用法。