2017-01-03 43 views
0

我使用protobuf的和需要发送转换后的字节与API请求,并需要在服务器再次解码,字符串将是这样的:如何发送这种类型的字符串与API调用

\ b \ xC0 \ xB3 \ xB9 \ xDD \ xFC \ x1C \ x12XBalance用62.0到期的日期为09-11-2016 09:10:00剩余余额为1490.0 \ x1A \ x0F退款余额\“XBalance用62.0到期日期扣除的金额为09- 11-2016 9点10分00秒余额为1490.0(\ X99 \ x9C \ XCE \ XBF \ X05

我怎样才能发送此类型的请求,并在服务器上得到正确?

或者任何人都可以帮助我使用protobuf发送信息。

当我的身体然后把串它替换形式

\x99\x9C\xCE\xBF\x05 

x99x9CxCExBFx05 

,并在报头发送的时候它取代像

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

感谢

+0

无论你想要在服务器上完全相同的字符串,使用'base64'。 – mudasobwa

+0

你的意思是需要先在base64中编码,然后发送到服务器并在那里解码? – Thorin

+0

我会这样,是的。这是最简单和最安全的。 – mudasobwa

回答

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到收件人。

+0

是的,我看到这个例子,但字符串将从android侧生成,并与api调用ruby来这就是为什么我必须发送字符串 – Thorin

+0

'MyTestMessage.encode(mymessage)'产生字符串,不是吗? – mudasobwa

+0

是的,它产生像我在我的问题中添加的字符串也解码正在工作,但问题是,当我发送相同的字符串与API不能够接收红宝石一侧 – Thorin