Ich habe ein C# -Tool geerbt, das ein serialisiertes Byte-Array von Besprechungsdaten an eine Online-Kalenderanwendung sendet. Der Online-Kalender verwendet eine node.js-API. Mein Problem ist, dass das serialisierte Byte-Array von node.js nicht korrekt geparst wird (IE, in express ist das req.body-Objekt leer). Ich suche entweder nach einer Möglichkeit, die Daten zu senden, damit sie von Node.js analysiert werden kann, oder nach einem Parser in Node.js, der C# -Byte-Arrays verarbeiten kann. Es ist JSON formatiert. Hier ist der Code, der die Anfrage sendet:Deserialisierung eines Bytes [] aus C# Tool in Node.js
string json = JsonConvert.SerializeObject(reallyPost, Formatting.None);
byte[] postThisz = Encoding.ASCII.GetBytes(json);
byte[] response = wc.UploadData(siteUrl, postThisz);
Im Moment versuche ich einfach, die Daten zu protokollieren. Die Route wird hier gefangen:
app.post('/remotePost', api.remotePost);
die diese Steuerung verwendet:
module.exports.remotePost = function (req, res) {
console.log(req);
console.log(req.body);
sendJsonResponse(res, 200, "remote posted.");
};
Die req.body durch meine Parsing-Middleware bevölkert wird:
app.use(bodyParser.json());
Dies kann jedoch das Byte-Array nicht umgehen gesendet von dem C# -Programm. Ich kann das lösen, indem ich entweder einen Parser finde, der den C# -POST korrekt behandelt (byte [] -Typ), oder ein C# -Modul finde, das einen Beitrag mit einem Format von JSON.stringify() erzeugen kann.
bedeutet das ich etwas anderes als MyWebClient verwenden soll(). Upload() um die Anfrage zu senden? Scheint so, als ob diese Methode auf binären Daten besteht. – awimley
Ah, sorry, sieht aus wie ich falsch gelesen habe. Das einzige Problem, das ich hier sehen kann, ist, dass Sie 'Encoding.ASCII' anstelle von' Encoding.UTF8' verwenden. – cubrr