我的WebApp需要通过ProtBuf与服务器通信。为了实现这一点,我需要能够发布原始二进制数据。
目前我正在使用的代码是这样的。问题在于HttpClient
将Uint8Array编码为JSON数组,结果不再是有效的protobuf:
const message = LoginRequest.fromObject({
code: code,
username: username,
password: password
});
const buffer: Uint8Array = LoginRequest.encode(message).finish();
this.http.post('https://api.myserver.com', buffer)
.subscribe(/*...*/);
HttpClient.post
接受一些选项,您可以将responseType
设置为json
、text
、blob
或arraybuffer
。但这只是设置了响应的预期类型,请求正文仍然以JSON编码。
HttpClient
是否有发送未编码正文的可能性?
编辑:这是我在服务器上收到的正文:
{"0":10,"1":3,"2":97,"3":98,"4":99,"5":18,"6":5,"7":97,"8":100,"9":109,"10":105,"11":110,"12":26,"13":8,"14":112,"15":97,"16":115,"17":115,"18":119,"19":111,"20":114,"21":100}