Как я могу отправить этот тип строки с вызовом API
Я использую protobuf и мне нужно отправить конвертированные байты с запросом API, и мне нужно снова декодировать на сервере, строка будет выглядеть так:
\ b \ xC0 \ xB3 \ xB9 \ xDD \ xFC \ x1C \ x12XBalance, списанный с 62.0 Срок действия: 09-11-2016 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
Спасибо
1 ответ
Помимо того, что я написал в комментариях, рубин 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
вашему получателю.