我正在使用protobuf并且需要使用api请求发送转换后的字节,并且需要在服务器上再次解码,字符串将是这样的:
\ b \ xC0 \ xB3 \ xB9 \ xDD \ xFC \ x1C \ x12XBalance借记62.0到期日是2016年11月9日09:10:00剩余余额是1490.0 \ x1A \ x0F债务余额\" XBalance 62.0到期日借记日期为09-11-2016 09:10:00剩余余额为1490.0(\ x99 \ x9C \ xCE \ xBF \ x05
如何发送此类请求并在服务器上正确使用?
或者任何人帮助我使用protobuf发送信息。
当我在身体中发送字符串时,它会替换表单
\x99\x9C\xCE\xBF\x05
到
x99x9CxCExBFx05
当发送标题时,它被替换为
\\x99\\x9C\\xCE\\xBF\\x05
由于
答案 0 :(得分:0)
除了我在评论中所写的内容,ruby protobuf
binding home包含了如何实现它的完美示例:
require 'google/protobuf'
# generated from my_proto_types.proto with protoc:
# $ protoc --ruby_out=. my_proto_types.proto
require 'my_proto_types'
mymessage = MyTestMessage.new(:field1 => 42, :field2 => ["a", "b", "c"])
mymessage.field1 = 43
mymessage.field2.push("d")
mymessage.field3 = SubMessage.new(:foo => 100)
# ⇓⇓⇓ HERE ⇓⇓⇓
encoded_data = MyTestMessage.encode(mymessage)
# ⇑⇑⇑ HERE ⇑⇑⇑
decoded = MyTestMessage.decode(encoded_data)
assert decoded == mymessage
您需要的一切是在发送之前对字节进行编码:
mymessage = MyTestMessage.new(message: '\x99\x9C\xCE\xBF\x05')
encoded_data = MyTestMessage.encode(mymessage)
# OR encoded_data = MyTestMessage.encode_json(mymessage)
现在将encoded_data
发送给您的收件人。