Проводка двоичного буфера с использованием Node-RED

Я пытаюсь отправить байтовый массив через POST с помощью Node-RED. Я могу успешно создать буфер с помощью этого модуля и сохранить его в msg.payload, Однако я не могу понять, как добавить его в качестве параметра в узле http-запроса.

Принимающее приложение требует заключающих в кавычки. Поэтому я использую полезную нагрузку в следующем URL: localhost:port/path?var=\"{{payload}}\", но это дает

"Ошибка преобразования http-параметров в args: недопустимый символ '\' ищет начало значения"

Если использовать его в URL запроса без кавычек: localhost:port/path?var={{payload}} ничего не проходит (я вижу на другом конце).

Я использую Protobuf из-за приложения на другой стороне, но я также попытался создать буфер, как описано здесь. Однако ничего не меняется.

1 ответ

Решение

У POST не должно быть аргументов в URL. Все данные должны быть в теле.

Вам нужно сделать msg.payload объект с ключами, совпадающими с именами arg.

msg.payload = {
  var = [buffer]
}

Вам, вероятно, придется поиграться с заголовком типа контента, так как по умолчанию я считаю, что Node-RED отправит тело JSON, и вы, вероятно, захотите application/x-www-form-urlencoded

Вы можете установить заголовки, добавив msg.headers объект

Другие вопросы по тегам