0

私はprotobufを使用しており、APIリクエストで変換されたバイトを送信する必要があり、サーバーで再度デコードする必要があります。文字列は次のようになります:

\b\xC0\xB3\xB9\xDD\xFC\x1C\x12XBalance 62.0 で引き落とされた有効期限は 2016 年 9 月 11 日 09:10:00 残高は 1490.0\x1A\x0FDebited Balance\"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

ありがとう

4

1 に答える 1

0

私がコメントで書いたことに加えて、ルビーprotobufバインディングホームには、それがどのように達成されるかの完璧な例が含まれています:

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します。

于 2017-01-03T06:32:05.783 に答える