和风天气返回的数据是经过gzip压缩的,且无法取消让他直接返回原数据.
在arduino库里找了一下没有直接可以使用的.
在github找了一个把uzlib移植到Arduino的库
https://github.com/tignioj/ArduinoUZlib/
把src文件夹复制到项目的lib下即可
在项目中引用它
#include "ArduinoUZlib.h"
解压
// 获取HTTP响应流
WiFiClient *stream = http.getStreamPtr();
// 获取 HTTP 响应体的大小
int size = http.getSize();
// 初始化inbuff数组
uint8_t inbuff[size];
// 将http流数据写入inbuff中
stream->readBytes(inbuff, size);
// 解压后的输出流
uint8_t *outbuf = NULL;
// 解压后的大小,在调用解压方法后会被赋值。
uint32_t out_size = 0;
// 调用解压函数
int result = ArduinoUZlib::decompress(inbuff, size, outbuf, out_size);
// 输出解压
Serial.write(outbuf, out_size);
解压成功