ESP32无法连接Google Cloud VM部署的Node-RED httpin节点发送POST/GET请求
解决方案
1 修复代码基础错误
你当前URLWebServer变量携带了http://前缀,而webClient.connect()方法仅接受纯IP/域名作为入参,前缀会导致地址解析失败,直接修改参数定义即可:
String URLWebServer = "222.222.111.128"; // 移除http://前缀 int PortWebServer = 1880; String uploadScript = "/json";
修改后先测试连接是否能成功,若还是失败继续排查以下网络配置问题。
2 检查Google Cloud防火墙规则
- 进入GCP控制台对应虚拟机的「防火墙规则」配置页,确认存在1880端口的入站允许规则
- 确认规则的源IP范围包含你ESP32所在网络的公网出口IP,测试阶段可临时将源IP设为
0.0.0.0/0验证是否为IP限制问题(验证完成后及时修改回指定IP段,避免安全风险)
3 检查Debian虚拟机本地配置
登录Debian虚拟机执行以下操作:
- 执行
ufw status查看系统防火墙状态,若已启用需执行ufw allow 1880/tcp放行1880端口 - 执行
netstat -tunlp | grep 1880确认Node-RED监听地址为0.0.0.0:1880,若仅监听127.0.0.1,需要修改Node-RED的settings.js配置文件,将uiHost参数改为0.0.0.0后重启Node-RED服务
4 后续POST请求适配提示
连接成功后需要确认Node-RED侧的配置:
- http in节点的请求方法需设置为
POST - 你当前代码提交的是
multipart/form-data格式数据,需确认Node-RED流配置支持该格式解析,若你需要提交纯JSON格式,可调整请求头的Content-Type为application/json,并修改请求体为JSON字符串 - 流末尾必须添加http response节点,否则ESP32端会等待响应超时
内容的提问来源于stack exchange,提问作者Paulo Borges
相关产品推荐
相关产品推荐

