『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 2024|回复: 4

[教程系列] 请问http节点的url里怎么传参数

[复制链接]

2

主题

48

帖子

413

积分

中级会员

Rank: 3Rank: 3

积分
413
金钱
365
HASS币
0
发表于 2023-2-5 21:55:50 | 显示全部楼层 |阅读模式
我爬取了我汽车的gps,但是直接展现在ha上有偏移,想用node-red调用百度的api做坐标纠偏,但是url上不会带动态参数,求稳如何解:
我现在的函数节点为
msg.coords = [msg.payload.longitude,msg.payload.latitude]
http节点的url为
https://api.map.baidu.com/geoconv/v1/?coords={coords}&from=3&to=5&ak=xxx
API要求的格式是
https://api.map.baidu.com/geoconv/v1/?coords=114.21892734521,29.575429778924&from=1&to=5&ak=你的密钥 //GET请求
但是运行就报错
{"status":24,"message":"param error:coords format error"}"
回复

使用道具 举报

3

主题

183

帖子

1684

积分

金牌会员

Rank: 6Rank: 6

积分
1684
金钱
1501
HASS币
10
发表于 2023-2-5 22:25:58 | 显示全部楼层
这样:
在 http request 节点中 url 中 只填 https://api.map.baidu.com/geoconv/v1/  ,内容 选择  Append to query-string parameters

在前面放一个 function 节点,设置 msg.payload= {'coords':'coords的值', 'from':3}
回复

使用道具 举报

77

主题

1392

帖子

2万

积分

元老级技术达人

积分
24762
金钱
23330
HASS币
290
发表于 2023-2-5 22:28:26 | 显示全部楼层
本帖最后由 dscao 于 2023-2-7 21:05 编辑
msg.coords = [msg.payload.longitude,msg.payload.latitude]
let coords = msg.coords

msg.url = `https://api.map.baidu.com/geoconv/v1/?coords=${coords[0]},${coords[1]}&from=3&to=5&ak=xxx`



这样应该也可以吧
回复

使用道具 举报

80

主题

388

帖子

1680

积分

金牌会员

Rank: 6Rank: 6

积分
1680
金钱
1292
HASS币
0
发表于 2023-2-5 22:46:10 | 显示全部楼层
用 json 格式的 payload

类似这样的

[
    {
        "id": "803e95821262ec23",
        "type": "function",
        "z": "5bfc1ec08cb3472e",
        "name": "钉钉消息预处理",
        "func": "var message='湿度差:' + msg.payload[2]\n+ ' %,湿度差过大,请进行户外活动!';\nmessage += '\\n室内湿度:' + msg.payload[0] + ' %';\nmessage += '\\n户外湿度:' + msg.payload[1] + ' %\\n';\n\nmsg.payload = {\n    "msgtype": "text", \n     "text": {\n         "content": message\n    }, \n    "at": {\n        "isAtAll": true\n    }\n}\n\nmsg.headers={\n     'Content-Type':'application/json',\n}\n\nmsg.url='https://oapi.dingtalk.com/robot/send?access_token=yourtoken';\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 1000,
        "y": 560,
        "wires": [
            [
                "7c98e4ba6db6c234"
            ]
        ]
    },
    {
        "id": "7c98e4ba6db6c234",
        "type": "http request",
        "z": "5bfc1ec08cb3472e",
        "name": "POST 请求",
        "method": "POST",
        "ret": "txt",
        "paytoqs": "ignore",
        "url": "",
        "tls": "",
        "persist": false,
        "proxy": "",
        "authType": "",
        "senderr": false,
        "x": 1190,
        "y": 560,
        "wires": [
            []
        ]
    }
]
回复

使用道具 举报

2

主题

48

帖子

413

积分

中级会员

Rank: 3Rank: 3

积分
413
金钱
365
HASS币
0
 楼主| 发表于 2023-2-7 19:03:37 | 显示全部楼层
Jarvis 发表于 2023-2-5 22:25
这样:
在 http request 节点中 url 中 只填 https://api.map.baidu.com/geoconv/v1/  ,内容 选择  Append ...

搞定了,感谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-12-23 03:06 , Processed in 0.275256 second(s), 26 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表