Ruby on rails 如何通过api调用发送这种类型的字符串

Ruby on rails 如何通过api调用发送这种类型的字符串,ruby-on-rails,ruby,protocol-buffers,protocol-buffers-3,Ruby On Rails,Ruby,Protocol Buffers,Protocol Buffers 3,我正在使用protobuf,需要通过api请求发送转换后的字节,需要在服务器上再次解码,字符串如下: \b\xC0\xB3\xB9\xDD\xFC\x1C\x12x借记62.0到期日的余额为2016年11月9日09:10:00剩余余额为1490.0\x1A\x0f借记62.0到期日的余额为2016年11月9日09:10:00剩余余额为1490.0(\x99\x9C\xCE\xBF\x05 我如何发送这种类型的请求并正确地进入服务器 或者任何人帮我用protobuf发送信息 当我在正文中发送字符串

我正在使用protobuf,需要通过api请求发送转换后的字节,需要在服务器上再次解码,字符串如下:

\b\xC0\xB3\xB9\xDD\xFC\x1C\x12x借记62.0到期日的余额为2016年11月9日09:10:00剩余余额为1490.0\x1A\x0f借记62.0到期日的余额为2016年11月9日09:10:00剩余余额为1490.0(\x99\x9C\xCE\xBF\x05

我如何发送这种类型的请求并正确地进入服务器

或者任何人帮我用protobuf发送信息

当我在正文中发送字符串时,它将替换表单

\x99\x9C\xCE\xBF\x05

当发送头时,它会像

\\x99\\x9C\\xCE\\xBF\\x05

谢谢

除了我在评论中所写的内容外,还包含了一个如何实现这一目标的完美示例:

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\u数据
发送给收件人。

无论您是否希望在服务器上使用完全相同的字符串,请使用
base64
。您的意思是需要先在base64中对其进行编码,然后发送到服务器并在那里解码?我会这样做,是的。这是最简单和最安全的方法。@mudasobwa还有其他方法吗?使用google protobuf?aft使用base64进行er解码它也会生成带有双反斜杠的字符串,如:\\b\\xC0\\xB3\\xB9\\xDD\\xFC\\x1C\\,ruby online encode解码似乎有问题。是的,我看到了这个示例,但字符串将从android端生成,并通过api调用到达ruby,这就是为什么我必须发送string
MyTestMessage.encode(mymessage)
生成字符串,不是吗?是的,它生成字符串,就像我在问题中添加的一样。解码也在工作,但问题是,当我用api发送相同的字符串时,无法在ruby端接收相同的字符串
mymessage = MyTestMessage.new(message: '\x99\x9C\xCE\xBF\x05')
encoded_data = MyTestMessage.encode(mymessage)
# OR encoded_data = MyTestMessage.encode_json(mymessage)