Как правильно кодировать ответ protobuf serializeBinary, чтобы отправить его по телу http? - PullRequest
0 голосов
/ 16 мая 2019

Я пытаюсь отправить протобуф по 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. Или, если я делаю что-то не так, пожалуйста, укажите это тоже.

...