Ruby on rails 如何通过api调用发送这种类型的字符串
我正在使用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发送信息 当我在正文中发送字符串时,它将替换表单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发送信息 当我在正文中发送字符串
\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,这就是为什么我必须发送stringMyTestMessage.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)