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

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

[教程系列] 请教如何使用返回的msg来执行http请求

[复制链接]

3

主题

33

帖子

256

积分

中级会员

Rank: 3Rank: 3

积分
256
金钱
223
HASS币
0
发表于 2022-9-9 00:54:03 | 显示全部楼层 |阅读模式
返回的msg.payload怎么用到http请求里面 的post参数里  

                               
登录/注册后可看大图

返回了一个图片链接 想用post提交到接口上
回复

使用道具 举报

3

主题

71

帖子

984

积分

高级会员

Rank: 4

积分
984
金钱
913
HASS币
0
发表于 2022-9-13 11:24:25 | 显示全部楼层
这样试试:
在http请求的url中填写,http://www.api.com?id={{ payload }}
回复

使用道具 举报

0

主题

34

帖子

174

积分

注册会员

Rank: 2

积分
174
金钱
140
HASS币
0
发表于 2022-9-24 12:45:21 | 显示全部楼层
本帖最后由 onions 于 2022-9-24 12:47 编辑

如果是payload 字段,默认就会以http请求 body的形式发送给接口,   至于如何处理,取决于你的接口的处理逻辑。

进一步,你的问题真正想表达的意思可能是,如何构造一个能让接口处理的请求http请求头。

首先你要知道你的接口类型是什么,有哪些请求参数,然后你需要构造一个符合接口要求的 http请求头。

这里涉及两个node 的配置 ,
第一步,你需要新增一个 change node 或function node ,在其中构造符合 接口要求的http请求头。
第二步, 你需要在http request node 中 配置 header 的conten-type类型为接口的类型。

如果还不明白,一个例子作参考,如下。

[{"id":"d25e24f7e03a1406","type":"tab","label":"Flow10","disabled":false,"info":"","env":[]},{"id":"71693b8bfde5b779","type":"inject","z":"d25e24f7e03a1406","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":100,"y":320,"wires":[["1abec6e3e32021a5"]]},{"id":"1abec6e3e32021a5","type":"change","z":"d25e24f7e03a1406","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"name\":\"Tom\",\"age\":16}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":280,"y":320,"wires":[["fd14eaf6a15fa720"]]},{"id":"fd14eaf6a15fa720","type":"httprequest","z":"d25e24f7e03a1406","name":"","method":"POST","ret":"txt","paytoqs":"ignore","url":"http://127.0.0.1:1880/print","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[{"keyType":"Content-Type","keyValue":"","valueType":"application/json","valueValue":""}],"credentials":{},"x":510,"y":320,"wires":[["c2d07f8c296ca5be"]]},{"id":"c2d07f8c296ca5be","type":"debug","z":"d25e24f7e03a1406","name":"debug28","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":700,"y":320,"wires":[]}]
回复

使用道具 举报

0

主题

34

帖子

174

积分

注册会员

Rank: 2

积分
174
金钱
140
HASS币
0
发表于 2022-9-24 12:54:36 | 显示全部楼层
zheng1112 发表于 2022-9-13 11:24
这样试试:
在http请求的url中填写,http://www.api.com?id={{ payload }}

将参数写在URL中,是 HTTP GET的请求方式,并非HTTP POST。

另外, Http request node 中http url输入框配置 似乎不支持 mustache语法,如果需要{{ }}这样写,还需要增加其他node,如template
回复

使用道具 举报

3

主题

33

帖子

256

积分

中级会员

Rank: 3Rank: 3

积分
256
金钱
223
HASS币
0
 楼主| 发表于 2022-9-25 09:47:30 | 显示全部楼层
onions 发表于 2022-9-24 12:45
如果是payload 字段,默认就会以http请求 body的形式发送给接口,   至于如何处理,取决于你的接口的处理逻 ...

谢谢大哥!解决了
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-29 05:17 , Processed in 0.149352 second(s), 26 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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