Я пытаюсь отправить протобуф по HTTP-сообщению серверу Java Spring с узла js client.
message.serializeBinary()
дает мне массив байтов uint8, который я пытался кодировать с помощью new StringDecoder('utf8').write(<bytes>)
. И я отправляю его по почте с запросом-обещанием npm:
const request = require('request-promise')
const options = {
uri: <some url>,
method: 'POST',
qs: {
'attr1': 'value1',
'attr2': new StringDecoder('utf8').write(message.serializeBinary())
}
}
request(options).then(console.log).catch(console.log)
Это достигает конечной точки весеннего сервера
@ResponseBody String endpoint(@RequestParam String attr1, @RequestParam String attr2) {
// This is raising InvalidProtocolBufferException
var message = Message.parseFrom(attr2.getBytes(StandardCharsets.UTF_8));
}
Мне кажется, проблема с кодировкой, я не уверен, какую кодировку использовать для транспортировки буфера протокола через http. Или, если я делаю что-то не так, пожалуйста, укажите это тоже.