You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Curl调用ThingsBoard HTTP API时连接被拒绝问题排查

解决ThingsBoard跨主机提交遥测数据时curl连接被拒绝的问题

问题描述

我按照《HTTP API指南》的说明,在Windows Bash环境执行以下curl命令,向运行Ubuntu 20.04的虚拟机上部署的ThingsBoard提交遥测数据:

curl -v -X POST -d "{\"temperature\": 25}" 122.20.192.14/api/v1/Ll6Pfoi5MosB5bC4nUxb/telemetry --header "Content-Type:application/json"

执行后返回错误:

curl(7) Failed to connect to 122.20.192.14 port 80 after 2044 ms: Connection refused

但在虚拟机终端内,用http://localhost:8080替换IP执行等效命令可正常运行。执行ss -anp | grep LISTEN | grep :80得到结果:

tcp LISTEN 0 100 *:8080 *:* 

已确认IP地址和设备访问令牌为随机修改,格式问题并非故障原因,查阅相关帖子后仍未解决问题。

解决方案

  • 修正访问端口:curl命令默认访问80端口,但ss结果显示ThingsBoard实际监听8080端口。修改命令,明确指定端口:
    curl -v -X POST -d "{\"temperature\": 25}" 122.20.192.14:8080/api/v1/Ll6Pfoi5MosB5bC4nUxb/telemetry --header "Content-Type:application/json"
    
  • 开放虚拟机防火墙端口:Ubuntu 20.04默认启用ufw防火墙,可能未开放8080端口。在虚拟机终端执行以下命令:
    sudo ufw allow 8080/tcp
    sudo ufw reload
    
  • 验证网络连通性:在Windows Bash中执行ping命令,确认主机能访问虚拟机IP:
    ping 122.20.192.14
    
    若ping不通,检查虚拟机网络模式(建议设为桥接模式),确保IP在主机可访问的网段内。
  • 确认服务绑定地址:检查ThingsBoard配置文件(通常路径为/etc/thingsboard/conf/thingsboard.conf),确认HTTP_BIND_ADDRESS设置为0.0.0.0(表示绑定所有网卡),而非仅127.0.0.1(仅本地可访问)。若修改配置,需重启ThingsBoard服务:
    sudo systemctl restart thingsboard
    

内容的提问来源于stack exchange,提问作者Ethan Leonard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 20:57:37