【问题标题】:Posting binary buffer payload using Node-RED使用 Node-RED 发布二进制缓冲区有效负载
【发布时间】:2017-08-15 15:02:32
【问题描述】:

我正在尝试使用 Node-RED 通过 POST 发送一个字节数组。我可以使用this module 成功创建缓冲区并将其存储在msg.payload 中。但是我不知道如何将它作为参数添加到 http 请求节点中。

接收应用程序需要用引号引起来。所以我在以下 url 中使用了有效载荷:localhost:port/path?var=\"{{payload}}\",但它给出了

“将 http 参数转换为 args 时出错:无效字符 '\' 正在寻找值的开头”

如果在不带引号的请求 url 中使用它:localhost:port/path?var={{payload}} 没有任何通过(我可以在另一端看到)。

由于另一端的应用程序,我正在使用 Protobuf,但我也尝试过创建缓冲区,如此处所述。但是,没有任何变化。

【问题讨论】:

    标签: http node-red protobuf.js


    【解决方案1】:

    POST 在 URL 中不应有参数。数据应该都在正文中。

    您是否需要将 msg.payload 设为具有与 arg 名称匹配的键的对象。

    msg.payload = {
      var = [buffer]
    }
    

    您可能不得不使用 content-type 标头,因为默认情况下我相信 Node-RED 会发送 JSON 正文,您可能想要 application/x-www-form-urlencoded

    您可以通过添加msg.headers 对象来设置标题

    【讨论】:

    • 我已经尝试像您描述的那样将 var 合并到有效负载中并设置一个标头对象,但是 var 的内容仍然不包含在 http 请求中。
    • 显然接收应用程序进行了自己的序列化,导致看似空的响应。但是,成功取决于您的内容类型建议和msg.payload 对象声明,所以谢谢您!
    猜你喜欢
    • 2021-12-08
    • 2010-09-06
    • 1970-01-01
    • 2016-10-10
    • 1970-01-01
    • 2014-09-01
    • 2021-07-24
    • 2019-06-04
    • 2013-03-05
    相关资源
    最近更新 更多