Я пытаюсь взаимодействовать с RESTful API, который принимает объекты application / x-protobuf в post.
.proto пример объекта:
message register
{
required string name = 1;
required int32 id = 2;
}
с помощью запросов я могу отправить это сообщение на сервер и получить 200.
например
register = protobuf_pb2.register()
register.name = "foo"
register.id = 1
response = requests.request("POST", url, data=register.SerializeToString(), headers=headers)
когда я смотрю на эту полезную нагрузку в формате SerializeToString (), она показывает аналогично
b '\ n \ t \ n \ x03foo \ x10 \ x01'
В качестве проверки работоспособности я могу затем создать новый объект сообщения и .ParseFromString () для него обратно в правильный формат сообщения.
Второй URI на сервере позволяет отправить запрос GET для получения тех же данных.Поэтому я использовал следующее:
register = protobuf_pb2.register()
response = requests.request("GET", url, headers=headers).content
register.ParseFromString(response)
Ответ возвращает
b'foo: 1 \ n '
И ParseFromString возвращает исключение
DecodeError ('Ошибка разбора сообщения',)
Я пропустил где-нибудь шаг?Нужно ли каким-либо образом кодировать полезную нагрузку .content перед анализом?
Большое спасибо.