如何通过api调用发送此类型的字符串

时间:2017-01-03 05:54:59

标签: ruby-on-rails ruby protocol-buffers protocol-buffers-3

我正在使用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

由于

1 个答案:

答案 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发送给您的收件人。