Я унаследовал инструмент C#, который отправляет сериализованный массив байтов данных собрания в приложение онлайн-календаря. В онлайн-календаре используется API-интерфейс node.js. Моя проблема заключается в том, что сериализованный массив байтов не получает обработанную корреляцию node.js (IE, в выражении объекта req.body пусто). Я ищу либо способ отправки данных, чтобы он мог анализироваться Node.js, либо парсер в Node.js, который может обрабатывать массивы байтов C#. Это JSON отформатирован. Вот код, который отправляет запрос:Deserializing byte [] из инструмента C# в Node.js
string json = JsonConvert.SerializeObject(reallyPost, Formatting.None);
byte[] postThisz = Encoding.ASCII.GetBytes(json);
byte[] response = wc.UploadData(siteUrl, postThisz);
На данный момент я просто пытаюсь зарегистрировать данные. Маршрут ловится здесь:
app.post('/remotePost', api.remotePost);
, который использует этот контроллер:
module.exports.remotePost = function (req, res) {
console.log(req);
console.log(req.body);
sendJsonResponse(res, 200, "remote posted.");
};
req.body получает населен мой разбор промежуточного слоя:
app.use(bodyParser.json());
Однако это не может обрабатывать массив байт отправленный программой C#. Я могу решить это, найдя парсер, который будет правильно обрабатывать C# POST (тип byte []) или найти модуль C#, который может создать сообщение, содержащее что-то из формата, возвращаемого JSON.stringify().
Означает ли это, я должен использовать что-то другое, чем MyWebClient(). UploadData() для отправки запроса? Похоже, этот метод настаивает на двоичных данных. – awimley
А, извините, похоже, я неправильно понял. Единственная проблема, которую я вижу, заключается в том, что вы используете 'Encoding.ASCII' вместо чего-то вроде' Encoding.UTF8'. – cubrr