2017-08-15 2 views
0

Je tente d'envoyer un tableau d'octets via POST à ​​l'aide de Node-RED. Je peux créer avec succès le tampon en utilisant this module et en le stockant dans msg.payload. Cependant, je ne peux pas comprendre comment l'ajouter en tant que paramètre dans un nœud de requête http.Publication de la charge utile du tampon binaire à l'aide de Node-RED

L'application réceptrice nécessite l'insertion de guillemets. Donc, j'utilise la charge utile dans l'adresse suivante: localhost:port/path?var=\"{{payload}}\", mais il donne

« Erreur de conversion http params à args: caractère non valide « \ » à la recherche de début de la valeur »

Si vous utilisez dans la requête url sans guillemets: localhost:port/path?var={{payload}} rien ne passe (je peux voir de l'autre coté). Je utilise Protobuf en raison de l'application de l'autre côté, mais j'ai également essayé de créer un tampon, comme décrit ici. Cependant, rien ne change.

Répondre

1

Les POST ne doivent pas contenir d'arguments dans l'URL. Les données doivent toutes être dans le corps.

Avez-vous besoin de créer un msg.payload objet avec des clés correspondant aux noms d'argument.

msg.payload = { 
    var = [buffer] 
} 

Vous aurez probablement à jouer avec l'en-tête de type de contenu que par défaut, je crois que Node-RED envoie un corps JSON et que vous voulez probablement application/x-www-form-urlencoded

Vous pouvez définir les en-têtes en ajoutant un msg.headers objet

+1

J'ai essayé d'incorporer le var dans la charge utile comme vous le décrivez et de définir un objet d'en-tête, mais le contenu de var n'est toujours pas inclus dans la requête http. –

+0

Apparemment, l'application réceptrice a effectué sa propre sérialisation, ce qui a provoqué une réponse apparemment vide. Cependant, le succès dépendait de votre suggestion de type de contenu et de la déclaration d'objet msg.payload', alors merci pour cela! –